![如何在Nginx后面正确设置Tracd?](https://linux22.com/image/662714/%E5%A6%82%E4%BD%95%E5%9C%A8Nginx%E5%90%8E%E9%9D%A2%E6%AD%A3%E7%A1%AE%E8%AE%BE%E7%BD%AETracd%EF%BC%9F.png)
直接运行tracd
并访问其网页即可正常工作。
但是,我希望它位于 nginx 后面,可以通过 进行访问example.com/trac/
。
为此,我对 nginx 配置做了以下更改:
location /trac/ {
proxy_pass http://127.0.0.1:3456/; # tracd listens there
proxy_redirect default;
proxy_set_header Host $host;
}
现在访问example.com/trac/
时会显示一个损坏的 Trac 主页,其中没有任何 CSS、JS 或图像文件被加载,因为所有其他请求都被发送到类似 的地方example.com/css
,而不是example.com/trac/css
。
我怎样才能解决这个问题?
我如何让 Trac 意识到它在example.com/trac/
,而不是example.com/
?
谢谢!
编辑:我已设置以下trac.ini
设置并重新启动tracd
,但问题仍然存在:
base_url = https://example.com/trac/
use_base_url_for_redirect = true
答案1
它似乎具有决定性作用base_url
并且use_base_url_for_redirect
不再起作用。
相反,在直接运行时使用该--base-path
选项tracd
。
所以现在我tracd
像这样运行:
tracd /path/to/trac/dir --base-path=trac
并且 nginx 配置变得更简单:
location /trac/ {
proxy_pass http://127.0.0.1:3456/trac/;
proxy_redirect default;
proxy_set_header Host $host;
}
这似乎有效。