nginx - nginx - 为什么不总是继承add_header指令(rationale )?

为什么只从最低级别继承了Nginx的add_header语句。

举个例子:


server {


 server_name example.com;


 root my/root;



 listen 443 ssl;



 ssl_certificate my.cert;


 ssl_certificate_key my.key;



 add_header Strict-Transport-Security"max-age=31536000; includeSubdomains; preload" always;


 add_header X-Frame-Options SAMEORIGIN;


 add_header X-Content-Type-Options nosniff;


 add_header Content-Security-Policy: default-src 'self' https:;



 location ~* .(gif|jpeg|jpg|png|css|js|ico|txt)$ {


 add_header Cache-Control"public, max-age=86400";


 }


}



这些安全相关的headers都没有添加到与location块匹配的资产,用于增加缓存时间。

当且仅当前级别上没有定义add_header指令时,这些指令才从上一级继承。

http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header

时间:

当你在子location中放置新的add_header时,所有更高级别的add_headers都将消失,https://www.peterbe.com/plog/be-very-careful-with-your-add_header-in-nginx

...