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