linux - nginx添加add_header能启动,但不生效,也不报错
PHPz
PHPz 2017-05-27 17:44:23
0
1
1362

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

PHPz
PHPz

学习是最好的投资!

全部回复(1)
巴扎黑

从你贴出来的配置看来,配置是没有问题的。
问题可能在于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

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

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

或者,使用/index.html?ver=1来绕过缓存也可以。🎜
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!