我无法设置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在另一个端口露营。