ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: svn за nginx



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
--- 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;


 




Copyright © Lexa Software, 1996-2009.