我已经在我的nginx web服务器上构build了svn服务器。 我的nginxconfiguration是
服务器{
听80;
server_name svn.mysite.com;
位置 / {
access_logclosures;
proxy_pass http://svn.mysite.com:81;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header主机$主机;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
}
位置〜\ .php $ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
包括fastcgi_params;
}
}
现在,我可以svn co和svn正常没有任何问题,当我尝试提交我得到错误:
$ svn了 在修订1285。 $ svn信息 path:。 url:http://svn.mysite.com/elpis-repo/crons 存储库根目录:http://svn.mysite.com/elpis-repo 储存库UUID:5303c0ba-bda0-4e3c-91d8-7dab350363a1 修订版:1285 节点种类:目录 附表:正常 最后更改了作者:alaa 最后更改Rev:1280 最后修改date:2012-04-29 10:18:34 +0300(2012年4月29日星期日) $ svn st M config.php $ svn ci -m“只是一个testing,添加空行configuration”config.php 发送config.php svn:提交失败(详情如下): svn:文件“config.php”已过期 svn:'/elpis-repo/!svn/bc/1285/crons/config.php'找不到path
如果我尝试svn端口81(我的proxy_pass是apache),然后svn ci,它将工作顺利! 但是为什么当我使用nginx来实现它时,它不工作?
任何想法是高度赞赏。
该请求被您的\.php$位置块捕获,并通过FastCGI传递给PHP。 你需要确保SVN请求总是代理到Apache。 如果你不需要这个虚拟主机上的PHP,只需删除该位置指令。 如果您需要特定path下的PHP,请使位置块更具体,如^/phpstuff/.*\.php$ 。 如果不可能,在PHP之前添加一个空的位置块来捕获SVN回购path下的.php文件,例如:
location ~ ^/elpis-repo/.*\.php$ {}
如果你想代理请求,只有“svn.mysite.com/elpis-repo”颠覆,其余的networking服务器,然后使用此
location ~ ^/elpis-repo {}