我使用 nginx 1.10.1,其配置类似于:
server {
(...)
add_header Header1 "value";
(...)
# in this location above add_header directive works
location / {
uwsgi_pass unix:/var/run/some.sock;
(...)
}
# ..and it this one it doesn't!
location ~* (^/$|favicon.ico|robots.txt) {
return 204;
expires 24h;
add_header Cache-Control "public";
etag on;
}
}
..所以我的问题是 Header1 是为第一个位置处理的请求设置的,但没有为第二个位置处理的请求设置。
为什么?
我已阅读add_header
文档并知道它默认只适用于“正”返回代码,但 204 是其中之一(我实际上已测试将代码更改为 200、404 但没有帮助)。
(我也尝试过添加always
到我的add_header Header1 ...
但这是一次相当绝望的尝试因为它不应该有帮助 - 而且它也没有。)
答案1
文档状态:
当且仅当当前级别没有定义 add_header 指令时,这些指令才会从上一级继承
的存在add_header Cache-Control "public";
阻止了该块继承add_header Header1 "value";
。