Stellen Sie sicher, dass Ihr Backend nicht Set-Cookie
zurückgibt Header. Wenn Nginx es sieht, deaktiviert es das Caching.
Wenn dies der Fall ist, ist die beste Option, Ihr Backend zu reparieren. Wenn das Reparieren des Backends keine Option ist, ist es möglich, Nginx anzuweisen, Set-Cookie
zu ignorieren Kopfzeile
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
Siehe Dokumentation
proxy_ignore_header
stellt sicher, dass das Caching stattfindet. proxy_hide_header
stellt sicher, dass die Cookie-Nutzlast nicht in der zwischengespeicherten Nutzlast enthalten ist. Dies ist wichtig, um zu vermeiden, dass Cookies über den NGINX-Cache verloren gehen.
Ich möchte hinzufügen, dass mehrere Konfigurationsoptionen und -kombinationen das Proxy-Caching in Nginx deaktivieren können. Leider ist dies schlecht dokumentiert.
In meiner Konfiguration habe ich proxy_buffering on
eingestellt und es hat das Caching wie erwartet aktiviert.
Nachdem ich mehrere Antworten und Kommentare durchgegangen war, fand ich, dass diese Konfiguration endlich funktioniert:
10m
=10mb
Schlüsselcache, max_size
bis 2GB
, inactive=120m
(Aktualisierung von der Quelle nach 120 Minuten Inaktivität), use_temp_path=off
(um io zu reduzieren)
proxy_cache_valid
- Cache-Status von 200
und 302
für 60 Minuten
proxy_cache_path /tmp/cache levels=1:2 keys_zone=default_cache:10m max_size=2g
inactive=120m use_temp_path=off;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 60m;
server {
listen 80;
server_name example.com;
# https://www.nginx.com/blog/nginx-caching-guide
location / {
proxy_cache default_cache;
proxy_buffering on;
proxy_ignore_headers Expires;
proxy_ignore_headers X-Accel-Expires;
proxy_ignore_headers Cache-Control;
proxy_ignore_headers Set-Cookie;
proxy_hide_header X-Accel-Expires;
proxy_hide_header Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_pass http://ip-of-host:80;
#set $memcached_key "$uri?$args";
#memcached_pass 127.0.0.1:11211;
# error_page 404 502 504 = @fallback;
}
}