我想在 Nginx 后面的 Gunicorn 中运行 Trac。Nginx 通过 LDAP(有效)处理用户身份验证,但我无法将其REMOTE_USER传递给 Trac。
对于 uWSGI,我会像这样配置 Nginx(经过测试并且可以正常工作):
uwsgi_param REMOTE_USER $remote_user;
Run Code Online (Sandbox Code Playgroud)
对于 Gunicorn,我找不到类似的配置指令。我试过设置标题,但它似乎没有改变任何东西:
proxy_set_header REMOTE_USER $remote_user;
Run Code Online (Sandbox Code Playgroud)
Trac wiki 中有一个关于此的条目,指出“wsgi 入口点不处理 [...] 身份验证”,以及使用本地密码文件处理基本身份验证的解决方法,这不是我需要的。我是否需要更改入口点以将此REMOTE_USER标头传递给正确的环境变量?目前只是这样:
import sys
import os
sys.stdout = sys.stderr
os.environ['TRAC_ENV'] = '/path/to/my/trac'
import trac.web.main
application = trac.web.main.dispatch_request
Run Code Online (Sandbox Code Playgroud) 如果您在两台服务器上提供服务以确保高可用性,那么以完全相同的方式配置它们会更好,还是应该引入细微的差异以防止“异常配置”错误?
我们在 Linux (Ubuntu LTS)、Nginx、Apache 和 Python WSGI 堆栈上托管了一个基于 Django 的网站,在负载均衡器后面的三台服务器上复制。目前它们托管在亚马逊云中,但我们将来可能会转移到我们自己的数据中心。我们最近在所有三台服务器上都遇到了一个问题,只能通过升级内核来解决,这让我们认为这个特定版本的内核与亚马逊当时可能已经开始使用的物理硬件不兼容。
这让我想到:让所有机器保持完全相同的配置会更好(更容易管理?),还是应该保持稍微不同的东西,这样两个组件之间的不兼容只会在一台机器上而不是所有机器上表现出来其中,保持您的网站在空中?