¿Cómo evitar la duplicación de directivas add_header en nginx?

¿Cómo evitar la duplicación de directivas add_header en nginx?

La documentación dice esto:

Estas directivas se heredan del nivel anterior si y sólo si no hay directivas add_header definidas en el nivel actual.

Mi problema es que tengo varios locationbloques que quiero almacenar en caché, 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;
}

Pero eso me hará perder todos los encabezados declarados fuera del bloque. Aparentemente, la única forma es duplicar esos encabezados en cada bloque de ubicación, por ejemplo:

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

No parece correcto. ¿Algunas ideas?

Respuesta1

Lo que buscas es el módulo ngx_headers_more: https://www.nginx.com/resources/wiki/modules/headers_more/

Y sí, el comportamiento de add_header es realmente irritante :)

información relacionada