Nginx hsts选项禁用其他安全性

问题描述 投票:1回答:1

我在/etc/nginx/sites-available/default中有这个配置

server {
   listen 443 ssl; # managed by Certbot
   ...
   # add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";
}

我在/etc/nginx/nginx.conf有以下内容

http {
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    ...

}

现在,如果我使用https://securityheaders.io/使用该配置测试我的网站,我通过了XSS,内容类型和帧的3个测试,但我没有通过HSTS测试。

如果我评论HSTS add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";线,我确实通过了STS测试,但我不再通过其他3。我究竟做错了什么?

ubuntu nginx ubuntu-16.04
1个回答
0
投票

当在较低的块级别存在另一个add_header语句时,http块中定义的server语句不会被add_header块继承。

来自the documentation

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


你需要把你的add_header陈述放在一起 - 这在这样的情况下是不方便的。

一种可能性是将公共语句移动到单独的文件中,以便它们可以包含在include语句中。

例如:

server {
     ...
     add_header Strict-Transport-Security "...";
     include /path/to/common.headers;
}
© www.soinside.com 2019 - 2024. All rights reserved.