特定の request_uri の add_header

特定の request_uri の add_header

アプリはすべてのルーティングを処理します。したがって、次の基本的な構成ブロックが機能します。

location / {
    try_files $uri $uri/ /index.html;
}

問題は、訪問者が特定の URI を要求するたびにカスタム ヘッダーを追加したいということです。たとえば、/content次のようにすると簡単です。

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

try_filesしかし、それはうまくいきません。Nginxはそのヘッダーを作成しません。そこで、コンテンツ/contentブロックしますが、ルートディレクトリに「実際の」フォルダがないので、明らかに機能しません。したがって、nginxは404お探しのページが見つかりませんでしたエラー。

また、そのブロックをルート ロケーション ブロック内に移動しようとしました。 これも機能しません。


Apache では、次のようにして簡単に実行できます。

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

答え1

マップされた変数を使用してヘッダーを設定できます。変数が空の文字列に設定されている場合、ヘッダーは暗黙的に破棄されます。

例えば:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

関連情報