如何在Nginx后面正确设置Tracd?

如何在Nginx后面正确设置Tracd?

直接运行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;
}

这似乎有效。

相关内容