Re: Upstream и redirect

Maxim Dounin mdounin на mdounin.ru
Пт Авг 20 18:27:53 MSD 2010


Hello!

On Fri, Aug 20, 2010 at 09:30:59AM -0400, vickodin wrote:

> Здравствуйте!
> 
> Опишу проблему с которой столкнулся.
> 
> Пример кофигурации:
> на уровне http есть прописанный upstream
> upstream pics {
>   server  127.0.0.1:8060;
>   server  127.0.0.1:8050;
> }
> дальше описан server
> server {
>  listen x.x.x.x:80;
>  server_name pics.example.com;
>  root /home/vhosts/pics.example.com/html;
>  location / {
>         try_files $uri $uri/index.html @back;
>  }
> location @back {
>  proxy_pass     http://pics;
>  proxy_set_header  Host       $host;
>  proxy_set_header  X-Real-IP  $remote_addr;
> }
> 
> Теперь ситуация:
> При отдаче back-end-ом редиректа (302) на
> http://pics.example.com
> клиенту от front-end-а отдается адрес для
> перехода такой - http://pics.example.com/.example.com
> 
> Меняю имя апстрима на "pic".
> Соответственно проксирование тоже
> делаю так:
> proxy_pass     http://pic;
> 
> Теперь адрес после редиректа
> становится таким - http://pics.example.com/s.domain.com
> Причем даже если редиректить просто на
> любой другой адрес, в начале которого
> есть имя апстрима, само имя "вырезается"
> и редирект идет на "тот же
> домен"+"/"+"остаток от адреса для
> редиректа"
> При "непересекаемых именах" все ок.

Known issue, багофича proxy_redirect default при использовании 
proxy_pass без uri.  Workaround:

proxy_redirect off;

Патч берут тут:

http://nginx.org/pipermail/nginx-ru/2010-February/032586.html

> Дополнительно: На back-end-е тоже nginx(+ Phusion
> Passenger)
> Правда и там и там не самый последний
> nginx = 0.8.32.
> Просто хотел сообщить о таком
> поведении, возможно это уже исправлено,
> но для страховки, все таки решил
> написать.

Нет, ещё не исправлено.

Maxim Dounin



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