在mod_proxy后面设置tracd?

我无法设置mod_proxy和tracd。 似乎这个问题几乎所有的search结果带我到内置的trac文档页面,提到它作为一个选项。

我有几个VirtualServer已经在有问题的盒子上运行,所以在端口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的forms运行的,所有trac文件存储的目录都是由www-data拥有的,而tracd(如下所示)则以www-data的forms运行,所以不知道它在哪里挂起。

/var/apache2/sites-enabled/trac.abc.com上的相关configuration:

 ProxyPass / http://localhost:8000/abcproject ProxyPassReverse / http://localhost:8000/abcproject 

/var/apache2/sites-enabled/trac.def.com上的相关configuration:

 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发送的头?

你是否也在apacheconfiguration中有这样的阻塞:

 ProxyRequests Off <Proxy http://127.0.0.1:8000/*> Order deny,allow Allow from all </Proxy> 

这是需要afair。

你的Apache错误日志在这件事上有什么要说的? 它报告什么不幸吗? 也看在trac日志看看请求是否到达后端和死亡,或者如果它是抛出错误的Apache。

错误403似乎表示权限问题,而不是服务器(5xx)问题。 也许有在htdigest文件中的问题?

尝试添加一个尾部斜杠和“ProxyPreserveHost开”

 ProxyPreserveHost On ProxyPass / http://localhost:8000/abcproject/ ProxyPassReverse / http://localhost:8000/abcproject/ 

如果您尝试以下操作会发生什么情况

 ProxyPreserveHost On ProxyPass /abcproject http://localhost:8000/abcproject ProxyPassReverse /abcproject http://localhost:8000/abcproject 

你有没有看过通过FastCGI运行Trac? http://trac.edgewall.org/wiki/TracFastCgi

那么你将不必担心trac在另一个端口露营。