Assicurati che il tuo backend non restituisca Set-Cookie
intestazione. Se Nginx lo vede, disabilita la memorizzazione nella cache.
Se questo è il tuo caso, l'opzione migliore è riparare il tuo backend. Quando la correzione del backend non è un'opzione, è possibile istruire Nginx in modo che ignori Set-Cookie
intestazione
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
Consulta la documentazione
proxy_ignore_header
assicurerà che la memorizzazione nella cache abbia luogo. proxy_hide_header
assicurerà che il payload del cookie non sia incluso nel payload memorizzato nella cache. Questo è importante per evitare la perdita di cookie tramite la cache NGINX.
Vorrei aggiungere che più opzioni e combinazioni di configurazione possono disabilitare la memorizzazione nella cache del proxy in Nginx. Purtroppo questo è scarsamente documentato.
Nella mia configurazione ho impostato proxy_buffering on
e ha abilitato la memorizzazione nella cache come previsto.
dopo aver esaminato più risposte e commenti, ho scoperto che questa configurazione finalmente funziona:
10m
=10mb
cache delle chiavi, max_size
a 2GB
, inactive=120m
(aggiornamento dalla fonte dopo 120 minuti di inattività), use_temp_path=off
(per ridurre io)
proxy_cache_valid
- stato della cache di 200
e 302
per 60 minuti
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;
}
}