Nginx の有効期限エポック ヘッダーを選択的に設定する

Nginx の有効期限エポック ヘッダーを選択的に設定する

私のサーバーには、画像を含むフォルダーがあり、CDN 経由でモバイル アプリにサービスを提供するためと、アプリに配信されるコンテンツを管理するバックエンド Web アプリと連携するために使用されています。後者 (バックエンド Web アプリ) では、問題のフォルダーから配信された画像がブラウザーにキャッシュされないようにして、作成者が更新したらすぐにバックエンド アプリで更新バージョンを表示できるようにしたいと考えています。CDN は、モバイル アプリに配信するために同じ画像を取得し、更新設定を 30 分に設定して、古くなったコンテンツ画像を配信しないようにしています。

expires epoch私の質問は、 Webアプリケーションからのリクエストに対してのみヘッダーを挿入するようにNginxを設定するにはどうすればよいかということです。この質問に対する答えの一部は、このSOスレッドヘッダーを挿入する前にリファラーを検査するように、そこで提案されているソリューションを変更する方法はありますか? たとえば、から発信されたすべてのリクエストはヘッダーhttps://example.com/backofficeで応答されますexpires epochが、CDN プル リクエストからのリクエストなど、その他のリクエストは応答されません。

答え1

ここでは単純なものifで十分でしょう:

server {

    location ... {

        if ($http_referer ~* ^https://example.com/backoffice) {
            expires epoch;
        }

    }

}

一般的には、大いにWeb アプリケーションがキャッシュの決定を行い、適切なディレクティブで応答することが望ましいです。

関連情報