web-dev-qa-db-ja.com

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

正しくないようです。何か案は?

6
ChocoDeveloper

あなたはngx_headers_moreモジュールの後にいます: https://www.nginx.com/resources/wiki/modules/headers_more/

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

2
Craig Miskell