7

I'm using the nginx X-Accel-Redirect feature where a proxied backend (A) can "internally redirect" nginx to reprocess a new URI (B) as if that were the one originally given by the client browser.

It works great in making request B (also proxied)and returning B's resulting headers back to the client browser. So far so good.

But also I have some headers from A which I'd like to pass along too. In other words, merge a handful of headers from A in with the result from B.

How can I do this? I've tried

add_header  X-My-Header  $http_x_my_header;

But that $http_x_my_header variable is empty, presumably because the original request didn't have it. I've also tried $upstream_x_my_header but that's empty too. I've tried things like proxy_pass_header X-My-Header; but no.

2 Answers 2

2

After trial and error, I found the $upstream_http_... headers to be working when first assigned to a variable;

So with your example that would become something like this;

  set $my_header '$upstream_http_x_my_header';
  add_header  X-My-Header  $my_header;
0

According to nginx manual for proxy_set_header:

If value is empty string, then header will not be sent to upstream.

Try using proxy_set_header X-My-Header "OK" or perhaps a variable you'd like to use as value. That should pass it to the proxy as well as the user.

1
  • proxy_set_header is for passing headers to the upstream; the question is about using the headers from the upstream.
    – Koen.
    Commented May 7, 2019 at 10:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .