我在/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。我究竟做错了什么?
答案 0 :(得分:0)
add_header
块中定义的http
语句在server
块中继承 时,如果另一个add_header
语句位于较低位置块级别。
当且仅当,这些指令继承自上一级别 在当前级别上没有定义add_header指令。
您需要将add_header
语句放在一起 - 这在此类情况下不方便。
一种可能性是将公共语句移动到单独的文件中,以便它们可以包含在include
语句中。
例如:
server {
...
add_header Strict-Transport-Security "...";
include /path/to/common.headers;
}