Nginx add_header用于50 *页面


19

我目前正在尝试让nginx在发送某种50 *错误时向响应添加标头。我已经在http块上添加了一个add_header指令,并且所有请求都受到尊重,但似乎是错误的。我还在其中一个虚拟主机中尝试了以下操作:

location /mediocregopheristhecoolest {
    add_header X-Test "blahblahblah";
    return 502;                                                                                                    
}       

转到该页面会显示502,但没有标题。这仅仅是nginx不做的事情,还是我做错了?


您能否发布$ curl -I <url> // mediocregopheristhecoolest
Chida

Answers:


21

该文档指出,add_header“在响应代码等于200、204、206、301、302、303、304或307的情况下,将指定的字段添加到响应头中。一个值可以包含变量。” 因此,它不适用于502。

我忘了补充,您可以使用第三方头文件more模块将头文件添加到其他代码中。不过,您可能必须重新编译才能添加它。


参见marat的评论:新的nginx版本支持设置标头,而不考虑响应代码
Laurens Rietveld

44

从Nginx 1.7.5开始,always无论响应代码如何,您都可以使用添加标头:

add_header X-Test "blahblahblah" always;

1
令人沮丧的是,Debian的仓库中的版本当前已经过时(1.6.x),但是nginx 维护着自己的带有最新稳定版本(目前为1.8.x)的存储库
kungphu

如果你想升级已经工作的Debian系统,Debian的反向移植是安全的...... packages.debian.org/jessie-backports/httpd/nginx上游包装使用不同的包装组织(可能会造成一定的停机时间,而不是nginx的平滑升级机制)。并且其postrm脚本删除了日志。以及其他一些小的区别……
Lajos Veres
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.