在子URI上使用Redmine的Apache mod_proxy

时间:2012-10-25 02:00:09

标签: apache redmine mod-proxy

我必须阅读互联网上关于Redmine和Apache的每一篇文章,我仍然无法让它发挥作用!

我使用Thin完全在http://server:3000上运行Redmine。我们在同一台服务器上有另一个Apache服务,它在不同的端口(8096)上托管我们的内部Web工具,所以我希望Redmine遵循相同的约定。

就httpd.conf中的Apache而言,我已添加:

ProxyPass /redmine http://127.0.0.1:3000/
ProxyPassReverse /redmine http://127.0.0.1:3000/
ProxyPreserveHost on

这似乎工作得很好。如果您输入http://server:8096/redmine,它会显示Redmine的初始页面,但点击任何其他链接结果为 404

看起来它没有将/ redmine附加到网站的链接上,因为点击“管理员”链接也会让我http://server:8096/admin而不是http://server:8096/redmine/admin

我还考虑将下面三个中的任何一个添加到 config / environment.rb ,但是似乎有相互矛盾的信息要使用,而且似乎没有一个:

ActionController::AbstractRequest.relative_url_root = "/redmine" 
ActionController::Base.relative_url_root = "/redmine" 
Redmine::Utils::relative_url_root = "/redmine" 

一如既往,非常感谢任何帮助!

编辑::

我也在试用

ProxyPass /redmine http://server:3000
ProxyHTMLURLMap http://server:3000 /redmine
<Location /redmine>
    ProxyPassReverse http://server:3000
    SetOutputFilter proxy-html
    ProxyHTMLURLMap /               /redmine/
    ProxyHTMLURLMap /redmine/       /redmine
</Location>

但似乎有相同的结果。有趣的是,如果我从本地服务器访问http://localhost:8096/redmine,所有链接似乎都可以工作并指向正确的页面,除了CSS和JS不起作用。

如果远程我手动输入任何链接http://server:8096/redmine/admin,那么我会获得带有CSS等的正确页面,这只是页面之间无法正常工作的链接!

1 个答案:

答案 0 :(得分:2)

伙计,我从未见过像这样改变上下文的apache代理工作设置:

ProxyPass /redmine http://127.0.0.1:3000/

这应该有效:

ProxyPass /redmine http://127.0.0.1:3000/redmine

要做到这一点,您需要设置后端服务器(杂项或其他)以便在子uri上工作。

我建议你改用mod_passenger。这是设置redmine的最简单方法,它不涉及代理。以下是我的设置:

brunojcm@brunojcm-htpc:~$ cat /etc/apache2/sites-available/redmine 
<Directory /var/www/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

/var/www/redmine是指向您的公共redmine文件夹的链接。

brunojcm@brunojcm-htpc:~$ ll /var/www/redmine
lrwxrwxrwx 1 root root 27 Sep  4  2011 /var/www/redmine -> /opt/redmine/current/public/

您还需要安装mod_passenger。我不记得究竟该怎么做,但我相信您需要gem install passenger并在运行passenger-install-apache2-module后按照说明进行操作。

希望它有所帮助!