Re: проблемы с unescape аргументов в proxy_set_header и proxy_pass

Maxim Dounin mdounin на mdounin.ru
Вс Окт 17 13:18:39 MSD 2010


Hello!

On Sun, Oct 17, 2010 at 09:31:10AM +0400, ilya at aniskovets.com wrote:

> А, точно! Надо просто попробовать описать upstream в fastcgi_pass. Спасибо!

Не надо.  Переменные $upstream_http_* доступны всегда, вне 
зависимостит от того описан ли upstream явно или определён неявно 
через ..._pass http://hostname.

Но есть нюанс: если вы после X-Accel-Redirect снова уходите в 
upstream (fastcgi_pass/proxy_pass/...) - то эти переменные будут 
очищены как только начнётся новая работа с upstream'ом.  Т.е. 
вариант


    location /protected/ {
        internal;
        proxy_pass http://$upstream_http_x_domain;
    }

работать не будет.  Нужно делать как-то так:


    location /protected/ {
        internal;
        set $domain $upstream_http_x_domain;
        proxy_pass http://$domain;
    }

В этом случае значение из $upstream_http_x_domain будет сохранено 
в другую переменную на стадии rewrite - до того как начнётся 
работа с новым upstream'ом.  И это значение можно будет 
использовать в proxy_pass.

Maxim Dounin

p.s. Please do not top-post.  Thank you.



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