nginx で add_header ディレクティブの重複を回避するにはどうすればよいでしょうか?

nginx で add_header ディレクティブの重複を回避するにはどうすればよいでしょうか?

ドキュメントには次のように書かれています:

これらのディレクティブは、現在のレベルで add_header ディレクティブが定義されていない場合にのみ、前のレベルから継承されます。

location私の問題は、次のような、キャッシュしたいブロックがいくつかあることです。

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

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

正しくないようです。何かアイデアはありますか?

答え1

ngx_headers_more モジュールを探しています: https://www.nginx.com/resources/wiki/modules/headers_more/

そして、確かに、add_header の動作は本当にイライラします :)

関連情報