linux - nginx添加add_header能启动,但不生效,也不报错

浏览:31日期:2022-06-26

问题描述

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也说没错,是在下输了

问题解答

回答1:

从你贴出来的配置看来,配置是没有问题的。问题可能在于add_header的继承特性上。如果某个location没有add_header指令就会继承上级配置的add_header,如果写了,就会完全覆盖上级的add_header。

你是否还额外写了location ~ .(html|htm)?$之类的配置,并且在里面使用了add_header指令?这样会造成覆盖了location /里的add_header。

另外建议一点:root和index指令放server block,如果没有特殊需求,可以将add_header也放在server block。

补充:静态资源修改头部信息,你需要用CTRL + F5来刷新,另外,使用了CDN的话,也要清理CDN上的缓存,或者,使用/index.html?ver=1来绕过缓存也可以。

相关文章: