Headers set in http {} go missing after setting headers in location {}

Here is my nginx configuration
http://pastie.org/private/4lceuccm9twmuiozdjnzkg

My nginx -V is:
nginx version: nginx/1.2.7
built by gcc 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)
TLS SNI support enabled

I noticed that when I had headers (add_header) in the http{ } block,
those
headers were not being displayed when another add_header was placed in a
location{ } block.

How can I have global headers sent to the client, and send additional
headers when the client reaches a location block?

Posted at Nginx Forum:

Accidentally pasted the headers twice. The config should look like this;
http://pastie.org/private/lz9zjkmvd3drbo4ezsp3fg

Posted at Nginx Forum:

On Sat, Mar 09, 2013 at 11:02:09PM -0500, nano wrote:

Hi there,

How can I have global headers sent to the client, and send additional
headers when the client reaches a location block?

The short version is “you can’t”.

The longer version is “you can, but you have to configure it the
nginx way”. Which means that in the final parsed nginx.conf, all the
add_header directives that you want to apply to a request are at the
same inheritance level.

You can “include” a file containing global ones wherever you set local
ones; or you can use a macro language to do that for you when creating
nginx.conf.

f

Francis D. [email protected]

Thank you very much Francis.

Posted at Nginx Forum: