<HTML><BODY><p>Вот так не работает. <br><br> location / {<br> ssi off;<br> include uwsgi_params;<br> uwsgi_pass unix:/var/run/uwsgi/app/beta1/socket; ### вот этот бекенд создает этот хедер и отдает в ответ. <br> uwsgi_param HTTP_X_ORIGINAL_URL $request_uri;<br> uwsgi_connect_timeout 300;<br></p><p>uwsgi_pass_header HTTP_X_FLAVOUR; ## пробовали подобное в разных вариациях<br> uwsgi_pass_header UPSTREAM_HTTP_X_FLAVOUR; ## пробовали подобное в разных вариациях</p><p> set $flavour $upstream_http_x_flavour; ## Расчитываем вот в этом месте завернуть хедер из ответа в переменную $flavour но судя по логу $upstream_http_X_Flavour пуст при том что в дебаг логе видно что бекенд его возвращает. <br> }</p><p>location ~ ^/_internal/redirect-mobile-website/(.*)$ {<br> proxy_set_header Host $host;<br> proxy_set_header X-Subdomain $x_subdomain;</p><p>proxy_pass_header X-Flavour;<br> proxy_set_header X-Flavour $flavour; ### А вот тут передать ее в подзапрос. </p><p>proxy_pass http://consul-frontend-mobile-website--beta1/$1$is_args$args;<br> }</p><br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
Среда, 14 июня 2017, 16:24 +03:00 от Maxim Dounin <mdounin@mdounin.ru>:<br>
<br>
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_14974466620000000587_BODY">Hello!<br>
<br>
On Wed, Jun 14, 2017 at 03:17:47PM +0300, Никита wrote:<br>
<br>
> <br>
> Добрый день !<br>
> <br>
> Проблема: <br>
> Не передаются некоторые response хедеры которые отдает uwsgi в ответе при использовании X-Accel-Redirect<br>
> <br>
> location / {<br>
> include uwsgi_params;<br>
> uwsgi_pass unix:/var/run/uwsgi/app/django/socket;<br>
> uwsgi_param HTTP_X_ORIGINAL_URL $request_uri;<br>
> }<br>
> location ~ ^/_internal/redirect-location/(.*)$ {<br>
> internal;<br>
> proxy_set_header Host $host;<br>
> proxy_set_header X-Subdomain $http_x_subdomain;<br>
> proxy_pass http://consul-frontend-mobile-website/$1$is_args$args;<br>
> }<br>
> <br>
> Вот дебаг лог<br>
> <br>
> <a href="https://gist.github.com/anonymous/e18aa7ebb5e717fada9a45affc9623f6" target="_blank">https://gist.github.com/anonymous/e18aa7ebb5e717fada9a45affc9623f6</a><br>
> <br>
> <br>
> Искомый хедер который не передается - X-Flavour<br>
<br>
В такой конфигурации и не должен. После перенаправления на бекенд <br>
передаются заголовки исходного запроса пользователя, аналогично <br>
тому, что происходит просто при обычном проксировании.<br>
<br>
> Пробовали:<br>
> <br>
> location ~ ^/_internal/redirect-location/(.*)$ {<br>
> internal;<br>
> proxy_set_header X-Flavour $upstream_http_x_flavour ;<br>
> proxy_set_header Host $host;<br>
> proxy_set_header X-Subdomain $http_x_subdomain;<br>
> proxy_pass http://consul-frontend-mobile-website/$1$is_args$args;<br>
> }<br>
> <br>
> Куда еще копнуть ?<br>
<br>
Переменные $upstream_* очищаются при начале работы с новым <br>
upsteam'ом, так что в момент формирования заголовков нового <br>
запроса переменная $upstream_http_x_flavour будет пустой.<br>
<br>
Если нужно использовать значение, полученное от бекенда в рамках <br>
предыдущего обращения, можно сохранить его в промеждуточную <br>
переменную с помощью директивы set, как-то так:<br>
<br>
set $foo $upstream_http_x_flavour;<br>
proxy_pass <a href="https://e.mail.ru/cgi-bin/link?check=1&refresh=1&cnf=5653a3&url=&msgid=14974466620000000587&x-email=m_nikita%40bk.ru" target="_blank">http://...;</a><br>
proxy_set_header X-Flavour $upstream_http_x_flavour;<br>
...<br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://nginx.org/" target="_blank">http://nginx.org/</a><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
</div>
</blockquote>
<br>
<br>-- <br>Никита Маслянников<br></BODY></HTML>