我在设置 mod_proxy 和 tracd 时遇到了麻烦。似乎针对此问题的所有搜索结果都会将我带到内置 trac 文档页面,其中提到这是一个选项。
我已经在有问题的机器上运行了几个 VirtualServers,因此在端口 80 或 443 上运行 tracd 不是一个选择,但我确实想让我的 trac 服务器在这台机器上可访问,而无需通过防火墙公开额外的端口。
事情变得更加复杂的是,我有多个 trac 存储库由同一个 tracd 实例提供服务,因此我想要进行如下设置:http://trac.abc.com代理到localhost:8000/projects/abcproject
,并且http://trac.def.com被代理到localhost:8000/projects/defproject
。
目前,我下面的设置导致 100% 出现 403 错误。服务器以 www-data 身份运行,存储所有 trac 文件的目录归 www-data 所有,并且 tracd(如下所示)以 www-data 身份运行,因此不确定它在哪里挂起了。
相关配置如下/var/apache2/sites-enabled/trac.abc.com
:
ProxyPass / http://localhost:8000/abcproject
ProxyPassReverse / http://localhost:8000/abcproject
相关配置如下/var/apache2/sites-enabled/trac.def.com
:
ProxyPass / http://localhost:8000/defproject
ProxyPassReverse / http://localhost:8000/defproject
实例化tracd所用的命令:
tracd -a defproject,/var/www/vhosts/trac-common/users.htdigest,DEFProject -a abcproject,/var/www/vhosts/trac-common/users.htdigest,ABCProject -p 8000 -b localhost -e /var/www/vhosts/trac-common/projects
如果我访问该网站,http://localhost:8000/
一切正常,但如果我尝试通过任何代理主机访问,则每次都会出现 403。
我已经成功地将 mod_proxy 用于其他服务器(例如 couchdb),如上所述,所以这可能与 tracd 发送的标头有关???
答案1
你在 apache 配置中也有这样的阻止吗:
ProxyRequests Off
<Proxy http://127.0.0.1:8000/*>
Order deny,allow
Allow from all
</Proxy>
这是非常需要的。
答案2
您的 Apache 错误日志对此事有何说明?它是否报告了任何异常情况?另外,查看 trac 日志以查看请求是否到达后端并终止,或者是否是 Apache 引发了错误。
答案3
错误 403 似乎表示权限问题,而不是服务器 (5xx) 问题。也许 htdigest 文件有问题?
答案4
您是否研究过通过 FastCGI 运行 Trac? http://trac.edgewall.org/wiki/TracFastCgi
这样您就不必担心 trac 驻扎在另一个端口上。