nginx add_header não funciona em uma das minhas localizações

3

Eu uso nginx 1.10.1 com configuração semelhante a esta:

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;
    }
}

.. então, meu problema é que o Header1 é definido para solicitações processadas pela primeira localização, mas não pela segunda.

Por quê?

Eu li add_header docs e sei que funciona por padrão apenas para códigos de retorno "positivos", mas 204 é um deles (eu realmente testei a alteração do código para 200, 404 e isso não ajudou) .

(Eu também tentei adicionar always ao meu add_header Header1 ... , mas foi uma tentativa bastante desesperada, pois não deveria ajudar - e não o fez.)

    
por Greg Dubicki 18.10.2016 / 16:58

1 resposta

4

A documentação afirma:

These directives are inherited from the previous level if and only if there are no add_header directives defined on the current level

A presença de add_header Cache-Control "public"; impede que esse bloco herde add_header Header1 "value"; .

    
por 18.10.2016 / 17:22