Maxim Dounin
June 14, 2017 11:06AM
Hello!

On Wed, Jun 14, 2017 at 05:53:39PM +0300, Никита wrote:

>
> Вот так не работает. 
>
> location / {
> ssi off;
> include uwsgi_params;
> uwsgi_pass unix:/var/run/uwsgi/app/beta1/socket; ### вот этот бекенд создает этот хедер и отдает в ответ. 
> uwsgi_param HTTP_X_ORIGINAL_URL $request_uri;
> uwsgi_connect_timeout 300;
> uwsgi_pass_header HTTP_X_FLAVOUR; ## пробовали подобное в разных вариациях
> uwsgi_pass_header UPSTREAM_HTTP_X_FLAVOUR; ## пробовали подобное в разных вариациях
> set $flavour $upstream_http_x_flavour; ## Расчитываем вот в этом месте завернуть хедер из ответа в переменную $flavour но судя по логу $upstream_http_X_Flavour пуст при том что в дебаг логе видно что бекенд его возвращает. 
> }
> location ~ ^/_internal/redirect-mobile-website/(.*)$ {
> proxy_set_header Host $host;
> proxy_set_header X-Subdomain $x_subdomain;
> proxy_pass_header X-Flavour;
> proxy_set_header X-Flavour $flavour; ### А вот тут передать ее в подзапрос. 
> proxy_pass http://consul-frontend-mobile-website--beta1/$1$is_args$args;
> }

Вы неправильно понимаете, как работают директивы в nginx'е.
Директивы не выполняются последовательно, они задают конфигурацию
для кокретного location'а. Соответственно, директива set
внутри "location /" будут выполнена на этапе поиска конфигурации,
до отправки запроса на бекенд. Подробнее о том, как выполняются
директивы модуля rewrite, можно почитать в документации,
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html.

Чтобы сохранилось значение, полученное от бекенда, надо
использовать директиву set уже после перенаправления, в том же
location'е, где вы собираетесь это значение использовать в
proxy_set_header, что и было показано в приведённом ранее примере.
Тот же пример, слегка расширенный, чтобы исключить
неоднозначность:

location / {
proxy_pass http://backend-to-return-redirect;
...
}

location /redirected/ {
    set $foo $upstream_http_x_flavour;
    proxy_pass http://...;
    proxy_set_header X-Flavour $upstream_http_x_flavour;
...
}

--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Не передается response header при исползовании X-Accel-Redirect

Никита June 14, 2017 08:18AM

Re: Не передается response header при исползовании X-Accel-Redirect

Maxim Dounin June 14, 2017 09:26AM

Re[2]: Не передается response header при исползовании X-Accel-Redirect

Никита June 14, 2017 10:54AM

Re: Не передается response header при исползовании X-Accel-Redirect

Maxim Dounin June 14, 2017 11:06AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 312
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready