Hi,
I’m having some trouble with FastCGI backend sending custom headers to
client while using X-Accel-Redirect. My backend PHP does something like
this:
header( “custom-header: some-value” );
header( "X-Accel-Redirect: " . $cache_file);
If I don’t use X-Accel-Redirect everything is fine (i.e. I can see the
custom-header from client side). But Nginx seems to strip all headers
set by my PHP backend if X-Accel-Redirect is used. Any idea why and how
I can add it back? Thanks very much!
Posted at Nginx Forum:
Hello!
On Thu, Apr 22, 2010 at 09:56:29AM -0400, riobard wrote:
see the custom-header from client side). But Nginx seems to
strip all headers set by my PHP backend if X-Accel-Redirect is
used. Any idea why and how I can add it back? Thanks very much!
nginx preserves only some specific headers (Set-Cookie and so on)
on X-Accel-Redirect. For anything else you may to do something
like this:
location / {
fastcgi_pass ...
# here are headers returned:
# X-Accel-Redirect: /redirected/...
# X-Custom: something
}
location /redirected/ {
internal;
add_header X-Custom $upstream_x_custom;
...
}
Note that if “/redirected/” does proxy_pass/fastcgi_pass in it’s
turn you have to store $upstream_x_custom into some intermediate
value via “set” directive (or it will be cleared/overriden by next
upstream request).
Maxim D.
Hi Maxim,
Thanks very much for the reply!
nginx preserves only some specific headers (Set-Cookie and so on)
on X-Accel-Redirect.
I was wondering why it has to be this way? It makes life quite difficult
because I need some fine-grained control over the headers returned from
the backend to the client. I cannot really set all of them in
nginx.conf, because many are application-specific. Any idea? Again,
thanks very much!
Posted at Nginx Forum: