Are headers set in the server block inherited to all location blocks

justink101 nginx-forum at
Wed Feb 5 06:49:59 UTC 2014

I am seeing strange behavior using includes. For example, if I request a
javascript file (ending in .js) the headers set globally in the server block
are not set. I was under the impression that if you set headers in the
server block, ALL location blocks below inherit those headers.

See the following:

server {
    add_header Strict-Transport-Security max-age=31556926;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

   include expires.conf;

# expires.conf
location ~* \.(?:ico|js|css|gif|jpe?g|png|xml)$ {
  expires 7d;
  add_header Pragma public;
  add_header Cache-Control "public, must-revalidate, proxy-revalidate";

When requesting a .js file, the Pragma and Cache-Control headers are set,
but all the headers set in the base server block are not. What is the fix

Posted at Nginx Forum:,247185,247185#msg-247185

More information about the nginx mailing list