svn за nginx
Igor Sysoev
is at rambler-co.ru
Thu Jul 27 17:07:05 MSD 2006
On Thu, 27 Jul 2006, Michail Baikov wrote:
> Igor Sysoev wrote:
>> On Thu, 27 Jul 2006, Denis Shaposhnikov wrote:
>>
>>> У меня nginx является прокси для dav svn. Заместил, что не проходят
>>> операции с файлом, в имени которого есть "%". Включил debug_connection
>>> и вот что обнаружил.
>>>
>>>
>>> [debug] 75906#0: *21 http request line: "CHECKOUT
>>> /svn/dsh/!svn/ver/80/trunk/.gconf/apps/evince/%25gconf.xml HTTP/1.1"
>>> [debug] 75906#0: *21 http uri:
>>> "/svn/dsh/!svn/ver/80/trunk/.gconf/apps/evince/%gconf.xml"
>>>
>>> Т.е., как я понял, svn запрашивает "%25gconf.xml", а nginx проксирует
>>> уже "%gconf.xml". Что написать в nginx.conf, что бы отключить такое
>>> поведение? Кажется мне, что была какая-то директива, отвечающая за
>>> %кодирование, но быстрый поиск по документации на сайте ничего не дал.
>>
>> Нужно убрать / в
>>
>> -proxy_pass http://127.0.0.1/;
>> +proxy_pass http://127.0.0.1;
>>
>>
> Странное решение проблемы 8-( ), может стоит разбирать все / в URL, в
> процессе синтаксического анализа параметров?
В данном случае % должен был передаваться бэкенду в виде %25, но
не передевался из-за ошибки. Прилагаемый патч её исправиляет.
Что касается / в proxy_pass, то см.
http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_pass
про обработку URI.
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/ngx_http_parse.c Mon Jun 26 20:57:24 2006
+++ src/http/ngx_http_parse.c Thu Jul 27 17:01:29 2006
@@ -969,6 +969,8 @@
#endif
case sw_quoted:
+ r->quoted_uri = 1;
+
if (ch >= '0' && ch <= '9') {
decoded = (u_char) (ch - '0');
state = sw_quoted_second;
More information about the nginx-ru
mailing list