我已经在我的 nginx 网络服务器上构建了 svn 服务器。我的 nginx 配置是
服务器 { 听80; 服务器名称svn.mysite.com; 地点 / { 访问登录关闭; 代理密码 http://svn.mysite.com:81; proxy_set_header X-真实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索引.php; 包括 fastcgi_params; } }
现在我能SVN 公司和svn 上传正常情况下没有任何问题,但当我尝试提交时出现错误:
$svn 向上 在修订版 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 上使用 svn co(我的 proxy_pass 是 apache),然后使用 svn ci,它会顺利运行!但是为什么当我使用 nginx 完成它时它不起作用?
任何想法都非常感谢。
答案1
请求被您的位置块捕获\.php$
,并通过 FastCGI 传递给 PHP。您需要确保 SVN 请求始终代理到 Apache。如果您不需要此虚拟主机上的 PHP,只需删除该位置指令。如果您需要特定路径下的 PHP,请使位置块更具体,例如^/phpstuff/.*\.php$
。如果这不可能,请在 PHP 之前添加一个空的位置块以捕获 SVN repo 路径下的 .php 文件,例如:
location ~ ^/elpis-repo/.*\.php$ {}
答案2
如果你只想将来自“svn.mysite.com/elpis-repo”的请求代理到 subversion,并将其余的请求代理到 Web 服务器,那么请使用此
location ~ ^/elpis-repo {}