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
的繼承特性上。如果某個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
來繞過快取也可以。