Nginx add_header 在我的某个位置块中不起作用?

Nginx add_header 在我的某个位置块中不起作用?

我使用 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";

相关内容