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

justink101 nginx-forum at nginx.us
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
here?

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,247185,247185#msg-247185



More information about the nginx mailing list