我正在尝试将同一个 Apache 作为 Subversion 和 Redmine (RubyOnRails 应用程序) 的服务器。当前设置是使用标准 mod_dav 和 mod_svn_dav 托管 Subversion 的 Apache,Redmine 在同一台服务器的 mongrel 上运行,端口为 3000,Apache mod_proxy_http 转发到它。
我是 Apache 的新手,所以我的设置是基于 Subversion 和 Mongrel 文档的标准设置。问题是标准的 Mongrel 配置如下:
ProxyRequests off
<VirtualHost *:80>
ServerName xxx.xxx.xxx.xxx
ServerAlias serverName
ErrorLog logs/error.log
CustomLog logs/access.log common
ProxyPass / http://xxx.xxx.xxx.xxx:3000/
ProxyPassReverse / http://xxx.xxx.xxx.xxx:3000
ProxyPreserveHost on
ProxyPass /images !
ProxyPass /stylesheets !
Alias /images "C:\redmine-0.8.4\public\images"
Alias /stylesheets "C:\redmine-0.8.4\public\stylesheets"
</VirtualHost>
Subversion配置如下:
<Location /svn>
DAV svn
SVNParentPath "C:\svn_repository"
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "C:\svn_repository\fat\http-auth-file"
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
如上所示,Redmine 的映射为“/”,Subversion 的映射为“/svn”,但对我来说这不起作用,因为 Subversion 访问被转发到 Mongrel 服务器。从文档中我感觉 <Location> 的优先级高于 <VirtualHost>。
无论如何,上述设置不起作用。如果有人能帮助我找出正确的设置,我将不胜感激。
我还尝试更改 VirtualHost 设置,让 ProxyPass 和 ProxyPassReverse 映射到“/redmine”。这只能将主页转发到 mongrel,但 Redmine 应用程序中的其余 URL 不会被转换为 URL 中的额外“/redmine”。
因此,我倾向于第一个设置,将“/”转发到 Mongrel 上的 Redmine,将“/svn”转发到 subversion。但如果这不可能,我愿意接受第二个选项。
提前致谢。
答案1
看起来你错过了这个:
ProxyRequests off
<VirtualHost *:80>
ServerName xxx.xxx.xxx.xxx
ServerAlias serverName
ErrorLog logs/error.log
CustomLog logs/access.log common
ProxyPass / http://xxx.xxx.xxx.xxx:3000/
ProxyPassReverse / http://xxx.xxx.xxx.xxx:3000
ProxyPreserveHost on
ProxyPass /images !
ProxyPass /stylesheets !
### note the line below ###
ProxyPass /svn !
### note the line above ###
Alias /images "C:\redmine-0.8.4\public\images"
Alias /stylesheets "C:\redmine-0.8.4\public\stylesheets"
</VirtualHost>
我很确定你只是错过了没有对 /svn 路径执行 ProxyPass