proxy_cache_bypass stellt weiterhin alte zwischengespeicherte Antworten bereit, wenn die URL zu nicht zwischenspeicherbar geändert wird

proxy_cache_bypass stellt weiterhin alte zwischengespeicherte Antworten bereit, wenn die URL zu nicht zwischenspeicherbar geändert wird

Unter normalen Umständen proxy_cache_bypassholt nginx bei der Verwendung eine neue Kopie vom Upstream und überschreibt die zwischengespeicherte Antwort mit der neuen.

Wenn sich die URL jedoch von einer zwischenspeicherbaren zu einer nicht zwischenspeicherbaren Antwort ändert (beispielsweise zu einer 4xx-Antwort mit Cache-Control: no-cache), proxy_cache_bypasswird durch die Verwendung zwar eine neue Kopie vom Upstream bereitgestellt, die alte Kopie bleibt jedoch im Cache.

Dies bedeutet, dass jedes Mal, wenn die URL ohne Auslösung angefordert wird proxy_cache_bypass, weiterhin der alte Cache bereitgestellt wird.

Ich vermute, dass dies beabsichtigt ist, denn proxy_cache_bypassnurüberschreibtzwischengespeicherte Antworten durch Speichern einer neuen, und eine no-cacheAntwort bedeutet, dass es nichts zu speichern gibt? Ist das der Fall?

Wie kann ich das lösen? Ich möchte das Caching für 4xx-Antworten nicht aktivieren ...

Ich verwende nginx/1.14.2

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my-cache:70m max_size=28g inactive=1d;
proxy_temp_path /var/cache/nginx/tmp;
proxy_cache my-cache;
proxy_cache_key $remote_user$scheme$host$request_uri;

proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504 http_429;

proxy_cache_bypass $http_cache_control;

proxy_read_timeout 90;
add_header X-Cache-Status $upstream_cache_status;

etag off;

Antwort1

Sie können nginx anweisen, nur 200, 301 und 302 Antworten zu cachen, indem Sie Folgendes angeben:

proxy_cache_valid 10m;

Dies weist nginx an, gültige Antworten zehn Minuten lang zwischenzuspeichern.

Antwort2

Dies ist das erwartete Verhalten. Deshalb möchten sie, dass Sie die kostenpflichtige Version verwenden, um dieProxy-Cache-BereinigungRichtlinie

verwandte Informationen