Re: X-Accel-Redirect и проксирование: на передается неверный url

Igor Sysoev igor на sysoev.ru
Пн Июл 12 19:34:26 MSD 2010


On Mon, Jul 12, 2010 at 07:20:37PM +0400, Alexey A. Rybak wrote:

> >> вроде бы обошел эту ситуацию через rewrite в проксирующем локейшене, типа
> >> rewrite ^/url-redirect /url-redirect last;
> >> несмотря на свою тривиальность эта директива всё-таки меняет какую-то
> >> внутреннюю переменную и после этого запрос на прокси уже приходит с
> >> нужным урлом.
> >> но это какой-то грязный хак. короче, вопрос простой - я чего-то не
> >> догоняю или это баг? nginx/0.7.64
> >
> > Это баг в 0.7.64. Исправилен в
> >
> > Changes with nginx 0.8.41                                        15 Jun 2010
> >
> >    *) Change: now nginx allows to use spaces in a request line.
> >
> > как side-effect.
> 
> боязно на 0.8 переползать... ну ок пасиб большое, будем знать

0.8 скоро будет stable.
Патч.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/http/ngx_http_request.c
===================================================================
--- src/http/ngx_http_request.c	(revision 2941)
+++ src/http/ngx_http_request.c	(working copy)
@@ -752,6 +752,7 @@
             r->unparsed_uri.len = r->uri_end - r->uri_start;
             r->unparsed_uri.data = r->uri_start;
 
+            r->valid_unparsed_uri = 1;
 
             r->method_name.len = r->method_end - r->request_start + 1;
             r->method_name.data = r->request_line.data;
Index: src/http/ngx_http_core_module.c
===================================================================
--- src/http/ngx_http_core_module.c	(revision 2941)
+++ src/http/ngx_http_core_module.c	(working copy)
@@ -785,10 +785,6 @@
         r->phase_handler = cmcf->phase_engine.server_rewrite_index;
     }
 
-    if (r->unparsed_uri.len) {
-        r->valid_unparsed_uri = 1;
-    }
-
     r->valid_location = 1;
 #if (NGX_HTTP_GZIP)
     r->gzip_tested = 0;


Подробная информация о списке рассылки nginx-ru