вторник, 22 июня 2010 г.

Nginx и SVN (405 Not Allowed)


Установил Subversion на сервере под управлением apache+nginx в виртуальный подкаталог /svn
Настроил, работает и крутится. Но не полностью — никак не коммитятся файлы с картинками, имеющими разрешение png, jpg и т.д. При этом svn ругается следующим образом:
Commit failed (details follow):
Server sent unexpected return value (405 Not Allowed) in response to PROPFIND
request for '.......'
Долго колупался, но все-таки нашел на каком-то заброшенном форуме вопрос про такую же ситуацию и упоминание, что если в конфиге nginx отредактировать строчку
location ~* ^.+\.(jpeg|jpg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|djvu|mht|chm)$ { ...
, убрав оттуда расширения файлов, которые не могут закоммититься, то все работает. Проверил - действительно, работает. Но отключать кэширование таких файлов — не решение.
Вместо этого надо исключить виртуальный подкаталог svn из обрабатываемых nginx'ом каталогов. За это отвечает секция nginx.conf примерно следующего вида:
location ~* ^/(awstats|myadmin/|svn/) {
proxy_pass http://xx.xx.xx.xx:8080;
proxy_redirect http://yoursite.com:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
После этой правки проблемные файлы отправляются в репозиторий, как по маслу.

1 комментарий:

Напишите что-нибудь по теме