Jan*_*bry 5 nginx authentication trac gunicorn
我想在 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)
奇怪的一个。我通过在 nginx 配置中包含这个来解决这个问题,就像你提到的
proxy_set_header REMOTE_USER $remote_user;
Run Code Online (Sandbox Code Playgroud)
然后对于 trac.wsgi 文件这个
import trac.web.main
def application(environ, start_application):
environ['REMOTE_USER'] = environ.get('HTTP_REMOTE_USER')
return trac.web.main.dispatch_request(environ, start_application)
Run Code Online (Sandbox Code Playgroud)
替换这个
import trac.web.main
application = trac.web.main.dispatch_request
Run Code Online (Sandbox Code Playgroud)
在你的 trac.wsgi
显然,正在进行的“HTTP_”有些事情弄乱了 trac 的身份验证
我猜测同样的事情可能可以通过对“HTTP_AUTHORIZATION”请求标头做同样的事情来完成,但我没有尝试这样做。所以我不确定,我只知道它现在有效!
| 归档时间: |
|
| 查看次数: |
8490 次 |
| 最近记录: |