大家都知道,nginx配置文件通过使用add_header指令来设置响应头。
昨天无聊用旋度查看一个站点的信息,发现返回的头部与想象中的不一样:
HTTP/200 日期:2019年07年2月的邱04:26:38格林尼治时间 内容类型:text/html;utf - 8字符集=不同:接受编码,饼干 cache - control:信息=3,must-revalidate last - modified:星期四,07年2月2019 03:54:54 GMT X-Cache:小姐 服务器:cloudflare …
主站点在nginx.conf中配置了hst等标题:
add_header Strict-Transport-Security”信息=63072000;预加载”; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection”1;模式=块”;
但响应头部没有这些头。除了常规的头,仅出现了一个配置配置在位置中的头X-Cache。
第一印象是CDN过滤了这些头?于是找Cloudflare的文档,没发现会对这些进行处理。转念一想,CDN过滤这些干啥啊?吃饱了撑的啊?他们又不搞郑审那一套!
问题转移到Nginx的配置上。打开谷歌搜索“Nginx add_header位置”,果然发现不少槽点。点开官网add_header的文档,有这样的描述(其他信息已省略):
可能有几个add_header指令。这些指令是继承了以前的水平如果> 位置/foo1 { add_header foo1 1;//重写foo2; } 位置/foo2 { add_header foo2 1; 返回200“OK”; }
不管请求/foo1还是/foo2,最终头只有foo2:
尽管说得通这是正常行为,但总让人感觉有点勉强和不舒坦:服务器丢掉http配置,位置丢掉服务器配置也就算的了,但两个位置在同一层级啊!
不能继承父级配置,又不想在当前块重复指令,解决办法可以用包括指令。
<强>参考强>
<李> Nginx模块ngx_http_headers_module李> <李> Nginx add_header配置陷阱李> <李>非常小心和你在Nginx add_header !你可以让你的网站不安全的李> <李> add_header指令位置覆盖add_header指示服务器李> <李> nginx配置之add_header的坑李>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
为何要小心Nginx的add_header指令详解