搜尋

首頁  >  問答  >  主體

linux - nginx新增add_header能啟動,但不生效,也不報錯

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也說沒錯,是在下輸了

PHPzPHPz2802 天前1461

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑2017-05-27 17:46:23

    從你貼出來的配置看來,配置是沒有問題的。
    問題可能在於add_header的繼承特性上。
    如果某個location沒有add_header指令就會繼承上級配置的add_header,如果寫了,就會完全覆蓋上級的add_header

    你是否還額外寫了location ~ .(html|htm)?$之類的配置,並且在裡面使用了add_header指令?
    這樣會造成覆蓋了location /裡的add_header

    另外建議一點:rootindex指令放server block,如果沒有特殊需求,可以將add_header也放在server block。

    補充:
    靜態資源修改頭部信息,你需要用CTRL + F5來刷新,
    另外,使用了CDN的話,也要清理CDN上的緩存,
    或者,使用/index.html?ver= 1來繞過快取也可以。

    回覆
    0
  • 取消回覆