nginx+apache+dav_svn 的怪异问题

鉴客 发布于 2011/10/26 10:47
阅读 682
收藏 0

最近帮朋友的网站做个小优化,由apache 迁移到nginx ,结果问题多多,svn 在提交的时候竟然有这个错误:

$ svn ci -m”fix the mail problem “
Sending        util.php
svn: Commit failed (details follow):
svn: File ‘util.php’ is out of date
svn: ‘/svn/!svn/bc/496/trunk/util.php’ path not found

但是提交其它文件貌似没有问题。怪异到爆!!!

首先说说nginx 的配置。

svn 仍然使用 apache 的dav_svn ,只是端口由80 改为 1234,其它配置不改。

location  /svn {
proxy_pass http://127.0.0.1:1234 ;
proxy_set_header Host “svn.mysite.net” ;
}

终于在google 大神找到一篇俄文的mailing-list(http://www.lexa.ru/nginx-ru/msg39625.html),竟然有人和我同样的错误,也终于弄清楚什么事了。。。简直是自己白痴!!
我的php 的配置:
location ~ \.php$ {
root           /var/www/backend/  ;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
include        fastcgi.conf;
}

这个location 用了正则匹配,比svn 的普通location 优先级高,结果svn 提交util.php 的时候(会发送一堆svn 的指令如propfind , option 等),优先到php 的location 里,结果就出错了。。。

那svn 也用高优先级的location 匹配吧,修改一下,用前缀匹配:
location ^~ /svn
ok , 成功了。。。
事后我才看到,nginx 本身就有一个404 的log :
211.102.143.12 – hello [03/Jul/2011:15:34:53 +0800] “PROPFIND /svn/!svn/bc/496/trunk/util.php HTTP/1.1″ 404 31 “-” “SVN/1.6.15 (r1038135) neon/0.28.6″ “-”
 
唉。。。怪自己~~
 
文章出处:http://blog.helosa.org/2011/07/03/nginx-apache-dav_svn.html
加载中
返回顶部
顶部