<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 14, 2016 at 3:45 PM, Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello!<br>
<span class="gmail-"><br>
On Mon, Nov 14, 2016 at 02:13:18PM +0300, Руслан Закиров wrote:<br>
<br>
> One URL redirects to @streams location:<br>
><br>
> HTTP/1.0 200 OK<br>
> expires: 0<br>
> cache-control: no-cache, no-store, must-revalidate<br>
> x-accel-redirect: @streams<br>
> Content-Type: text/html; charset=utf-8<br>
> Status: 200<br>
> x-real-location: /stream/?user_id=153847603&<wbr>lang=RU<br>
> pragma: no-cache<br>
><br>
> @streams<br>
><br>
> Location looks like this:<br>
><br>
> location @streams {<br>
>     proxy_set_header X-Real-IP $header_ip;<br>
>     ... more proxy sets...<br>
>     proxy_set_header X-Y<br>
> ttt$upstream_http_x_real_<wbr>location$upstream_http_status;<br>
>     proxy_set_header X-Z ttt$http_x_real_location;<br>
>     proxy_pass <a href="http://streams-backend" rel="noreferrer" target="_blank">http://streams-backend</a>$<wbr>upstream_http_x_real_location;<br>
> }<br>
><br>
> However, $upstream_http_x_real_location variable is empty and request<br>
> reaches backed with original URL.<br>
<br>
</span>That's expected.  All $upstream_* variables are re-initialized as<br>
long as proxy module starts working in a new location, and since<br>
there were no response yet when the proxy_pass value is evaluated,<br>
it resolves to an empty value.<br>
<br>
If you want to use $upstream_* variables set by a response with<br>
X-Accel-Redirect, you have to store them somewhere else.  For<br>
example, it can be done using the "set" directive of the rewrite<br>
module, which is evaluated before the request is proxied:<br>
<br>
   set $stored_real_location $upstream_http_x_real_<wbr>location;<br>
   proxy_pass <a href="http://foo" rel="noreferrer" target="_blank">http://foo</a>$stored_real_<wbr>location;<br></blockquote><div><br></div><div>This helps, suspected something like this, but until the last moment couldn't believe <span style="color:rgb(0,0,0)">upstream </span></div><div><span style="color:rgb(0,0,0)">module re-initializes variables before request to upstream. Wonder if it can be delayed until after</span></div><div><span style="color:rgb(0,0,0)">request phase.</span></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-HOEnZb"><font color="#888888">
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" rel="noreferrer" target="_blank">http://nginx.org/</a><br>
<br>
______________________________<wbr>_________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx</a></font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Руслан Закиров</div><div>Руководитель отдела разработки веб-сервисов</div><div><span>+7(916) 597-92-69</span>, <span>ruz @ <a href="http://www.sports.ru/" target="_blank"><img src="http://farm7.static.flickr.com/6235/6210250811_19a888dbba_o.jpg" width="43" height="14" style="vertical-align: bottom; margin-right: 0px;"></a></span></div></div></div>
</div></div>