nginx 为什么不总是继承add_header指令(理由)?

guicsvcw  于 2023-05-06  发布在  Nginx
关注(0)|答案(1)|浏览(218)

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";
    }
}

这些安全相关的头都没有添加到与location块匹配的资产中,专用于增加缓存时间,只是因为它添加了另一个头。
修复方法是将所有add_header指令复制到块中,这似乎与Nginx其余部分的工作方式相反,例如。root指令。
行为记录如下:
可以有多个add_header指令。当且仅当当前级别上没有定义add_header指令时,这些指令才从上一级别继承。
http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header
我想有一个很好的解释,我很好奇它是什么。

ttcibm8c

ttcibm8c1#

理解- nginx没有继承add_header指令-〉我的解决方案是包含在每个位置的单独配置文件...并且不在服务器级定义add_header。

相关问题