从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要讲解了“nginx配置add_header的坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nginx配置add_header的坑怎么解决”吧!
深泽网站建设公司成都创新互联公司,深泽网站设计制作,有大型网站制作公司丰富经验。已为深泽上千多家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的深泽做网站的公司定做!
前言
add_header 是 headers 模块中定义的一个指令,顾名思义就是用来添加 http 响应头的。但请注意他只是「添加」而已,并不是重写。所以如果已经存在某个头,再使用 add_header 就会出问题。而且在低版本的 nginx 中 add_header 还不支持在错误页面中使用。
这是一个坑比较多的指令。它的处理阶段比 location 处理晚,虽然可以写在 location 中,但如果 rewrite 别的 location,那么上一个 location 中尚未处理的 add_header 就会丢失。比如:
location = /a { add_header a 1; rewrite / /b; } location = /b { add_header b 2; return 204; }
并没有 a 1 这个头吧?这就是一个坑!
另一个坑就是一开始说的重复的问题,比如我希望给一个内容设置 content-type,但是由于全局有设置一个 default_type,所以就重复了。
default_type 'text/plain'; location = /a { add_header content-type application/json; return 200 '"ok"'; }
解决的办法当然有很多比如对这个 location 将 default_type 置空,或者干脆不用 add_header,直接针对这个 location 修改 default_type。
最后一个大坑就是对错误页面无法生效,这也是在中有明确定义的。比如下面这个例子:
location = /a { add_header content-type application/json; return 404 '"not found"'; }
我希望响应一个 json,然而由于状态码是 404,所以这里的 add_header 并不会生效。
虽然这个例子可以用 default_type 来解决问题,但如果是其它头呢?比如 access-control-allow-origin 要怎么办?那么除了使用 lua 或其它第三方模块来解决之外就无解了。nginx 当然也意识到了这个问题,所以文档中也说了在 1.7.5 版本之后支持一个叫 always 的参数。虽然 nginx 自己解决了这个问题,但基于 1.6.2 的 tengine 就要呵呵了。
感谢各位的阅读,以上就是“nginx配置add_header的坑怎么解决”的内容了,经过本文的学习后,相信大家对nginx配置add_header的坑怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图