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
に返します。
@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;
nginxはすでに301リダイレクトをキャッシュできます。 proxy_cache_valid ディレクティブを使用して、キャッシュされる時間を変更できます。
proxy_cache_valid 301 365d; # Cache permanent redirects for a whole year