ПРОЕКТЫ 


  АРХИВ 


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: URL from X-Accel-Redirect overrides $uri for $proxy_pass after 1.2.0 upgrade



Hello!

On Sat, Apr 28, 2012 at 07:44:53AM -0400, lekrus wrote:

> Здравствуйте,
> 
> Есть такой код:
> 
> location ~* ^/int/(.*) {
>               internal;
>                               
>               proxy_set_header   Host              $host;
>               proxy_set_header   X-Real-IP        $remote_addr;
>               proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
> 
>               proxy_pass $scheme://$backend;
>               proxy_redirect off;
>               proxy_buffering off; 
>       }
> 
> На эту ветку nginx попадает после
> передачи в X-Accel-Redirect параметра вида
> "/int/bla"
> 
> Запрос вида: http://localhost/test.aspx 
> До обновления на 1.2.0 перенаправлял на
> http://www.myhost.com/test.aspx
> После обновления на 1.2.0 перенаправляет
> на http://www.myhost.com/int/bla (т.е. на location, который
> передали в X-Accel-Redirect header)
> 
> В документации написано, что
> оригинальный URI не будет переписан.
> После обновления на 1.2.0. пришлось
> сделать такое изменение, чтобы
> редирект был правильным:
> proxy_pass $scheme://$backend$request_uri;
> 
> Подскажите - это раньше работало
> неправильно, а в новой версии все
> хорошо, либо это все же баг новой
> версии, либо это новая особенность?

Это раньше работало неправильно.

Changes with nginx 1.1.12:

    *) Bugfix: a "proxy_pass" directive without URI part always used
       original request URI if variables were used.

Теперь оно себя ведёт так же, как если бы проксируемый сервер
был задан в конфиге явно, т.е. разницы в поведении

    proxy_pass http://backend.example.org;

и
    set $backend "backend.example.org";
    proxy_pass http://$backend;

нет (за исключением динамического резолвинга имён).

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.