Como evitar a duplicação de diretivas add_header no nginx?

Como evitar a duplicação de diretivas add_header no nginx?

A documentação diz o seguinte:

Estas diretivas são herdadas do nível anterior se e somente se não houver diretivas add_header definidas no nível atual.

Meu problema é que tenho vários locationblocos que quero armazenar em cache, como este:

add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

location ~ ^/img/(.*)\.(png|jpg|jpeg|gif|bmp)$ {
    expires 1w;
    add_header Cache-Control public;
}

Mas isso me fará perder todos os cabeçalhos declarados fora do bloco. Aparentemente, a única maneira é duplicar esses cabeçalhos em cada bloco de localização, por exemplo:

add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

location ~ ^/img/(.*)\.(png|jpg|jpeg|gif|bmp)$ {
    expires 1w;
    add_header Cache-Control public;
    add_header X-Frame-Options SAMEORIGIN;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
}

Não parece certo. Alguma ideia?

Responder1

Você está atrás do módulo ngx_headers_more: https://www.nginx.com/resources/wiki/modules/headers_more/

E sim, o comportamento de add_header é realmente irritante :)

informação relacionada