web-dev-qa-db-ja.com

Nginxリバースキャッシュ301リダイレクト(永続的)

Nginxに301のすべてのproxy_passリダイレクトリクエストをキャッシュさせることは可能ですか?

例えば:

要求#1:クライアントAが/ some/pathを要求する-> proxy_passに送信される->結果は/some/other/pathへの301リダイレクトになります-> nginxは、301リダイレクトであるため、この応答をキャッシュします。

リクエスト#2:クライアントBが/ some/pathをリクエストする-> nginxは、キャッシュされた301リダイレクトを/some/other/pathに返します。

7
Kendall Hopkins

@Michaelの答えがほとんどの方法でそこに到達したことがわかりましたが、proxy_cacheをオンにすると、ExpiresおよびCache-Controlでファイルが自動的にキャッシュされます。だから私はこの解決策に行き着きました。

proxy_cache_path /tmp/nginx levels=1:2 keys_zone=main-cache:8m max_size=1000m inactive=600m;
proxy_temp_path /tmp/nginx/tmp;
proxy_cache main-cache;
proxy_cache_valid 301 60m;
proxy_cache_key "$scheme://$Host$request_uri";
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
4
Kendall Hopkins

nginxはすでに301リダイレクトをキャッシュできます。 proxy_cache_valid ディレクティブを使用して、キャッシュされる時間を変更できます。

proxy_cache_valid 301 365d; # Cache permanent redirects for a whole year
8
Michael Hampton