我在我的 nginx 网络服务器上构建了 svn 服务器。我的 nginx 配置是
服务器 { 听80; 服务器名称 svn.mysite.com; 地点 / { access_log 关闭; proxy_pass http://svn.mysite.com:81; proxy_set_header X-Real-IP $remote_addr; proxy_set_header 主机 $host; 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 up而没有任何问题,当我尝试提交时出现错误:
$svn up 修订版 1285。 $ svn 信息 小路: 。 网址:http://svn.mysite.com/elpis-repo/crons 存储库根目录:http://svn.mysite.com/elpis-repo 存储库 UUID:5303c0ba-bda0-4e3c-91d8-7dab350363a1 修订:1285 节点种类:目录 时间表:正常 最后更改作者:alaa 上次更改版本:1280 最后更改日期:2012-04-29 10:18:34 +0300(2012 年 4 月 29 日,星期日) $svn st M配置.php $svn ci -m "只是一个测试,在配置中添加空行" config.php 发送 config.php svn:提交失败(详情如下): svn: 文件 'config.php' 已过期 svn: '/elpis-repo/!svn/bc/1285/crons/config.php' 找不到路径
如果我尝试在端口 81(我的 proxy_pass 是 apache)上使用 svn co,然后使用 svn ci,它会顺利运行!但是为什么当我使用nginx来完成它时它不起作用?
任何想法都受到高度赞赏。
该请求被您的
\.php$
位置块捕获,并通过 FastCGI 传递给 PHP。您需要确保 SVN 请求始终代理到 Apache。如果您不需要在此虚拟主机上使用 PHP,只需删除该位置指令。如果您需要特定路径下的 PHP,请使位置块更具体,例如^/phpstuff/.*\.php$
. 如果那不可能,请在 PHP 之前添加一个空位置块以捕获 SVN 存储库路径下的 .php 文件,例如:而且,如果您只想将来自“svn.mysite.com/elpis-repo”的请求代理到颠覆并将其余请求代理到 Web 服务器,请使用此