nginx add_header 在我的位置之一不起作用

Gre*_*cki 4 http nginx http-headers

我使用 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

..所以我的问题是 Header1 是为第一个位置处理的请求设置的,但不是为第二个位置设置的。

为什么?

我已经阅读了add_header文档并知道它默认仅适用于“正”返回代码,但 204 是其中之一(我实际上已经测试过将代码更改为 200、404 并且没有帮助)。

(我也尝试添加always到我的add_header Header1 ...但这是一个相当绝望的尝试,因为它不应该有帮助 - 而它没有。)

Ric*_*ith 5

该文件指出:

当且仅当在当前级别上没有定义 add_header 指令时,这些指令才从上一级继承

的存在add_header Cache-Control "public";阻止该块继承add_header Header1 "value";.