nginx添加add_header能启动,但不生效,也不报错
配置如下:
server {
listen 80;
server_name localhost;
server_tokens off;
#access_log logs/host.access.log main;
location / {
add_header X-Frame-Options 'SAMEORIGIN'; # 只允许本站用 frame 来嵌套
add_header X-XSS-Protection '1; mode=block'; # XSS 保护
add_header X-Content-Type-Options 'nosniff';#响应头可以禁用浏览器的类型猜测行为
root /mnt/hexo-auto-deploy/hexo/public;
index index.html index.htm;
}
location ~.*\.(js|css)?$ {
access_log off;
expires 1h;
}
location ~* ^.+\.(eot|ttf|otf|woff|woff2|svg)$ {
access_log off;
expires max;
}
试着把 add_header放各种地方也没用,我认输
主机是ecs ubuntu nginx版本1.13.0
测了下nginx -t也说没错,是在下输了
从你贴出来的配置看来,配置是没有问题的。
问题可能在于
add_header
的继承特性上。add_header
的继承特性上。如果某个location没有
add_header
指令就会继承上级配置的add_header
,如果写了,就会完全覆盖上级的add_header
如果某个location没有add_header
指令就会继承上级配置的add_header
,如果写了,就会完全覆盖上级的add_header
。你是否还额外写了
location ~ .(html|htm)?$
之类的配置,并且在里面使用了add_header
指令?location ~ .(html|htm)?$
之类的配置,并且在里面使用了add_header
指令?这样会造成覆盖了
location /
里的add_header
这样会造成覆盖了location /
里的add_header
。另外建议一点:
root
和index
指令放server block,如果没有特殊需求,可以将add_header
也放在server block。补充:
或者,使用静态资源修改头部信息,你需要用
CTRL + F5
来刷新,CTRL + F5
来刷新,另外,使用了CDN的话,也要清理CDN上的缓存,
或者,使用
/index.html?ver=1
另外,使用了CDN的话,也要清理CDN上的缓存,/index.html?ver=1
来绕过缓存也可以。🎜