nginx add_header 配置在某些状态码下不生效

在 nginx 配置里加了一条 add_header 的配置,测试发现在 403 404 这些状态下并不会输出已配置的头,而 200 状态下却是正常的。

查了一下文档,发现说明上有写,add_header 配置只有在 200, 201, 204, 206, 301, 302, 303, 304, or 307 这些状态下才有效。

这是一个很奇怪的限制,最后在 nginx 论坛发现了一段回复,说之所以这样限制是因为 add_header 在一些错误状态码下会产生意外的作用,比如添加一个 expires 1y 后,会让错误状态意外地缓存超长的时间,导致意外事故。

解决办法也是有的,在 1.7.5 版本之后,可以添加一个 always 参数,这样就会总是可以输出配置的头部,风险自负。

2015年12月01日