Assurez-vous que votre backend ne renvoie pas Set-Cookie
entête. Si Nginx le voit, il désactive la mise en cache.
Si tel est votre cas, la meilleure option est de réparer votre backend. Lorsque la réparation du backend n'est pas une option, il est possible de demander à Nginx d'ignorer Set-Cookie
en-tête
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
Voir la documentation
proxy_ignore_header
s'assurera que la mise en cache a lieu. proxy_hide_header
s'assurera que la charge utile du cookie n'est pas incluse dans la charge utile mise en cache. Ceci est important pour éviter les fuites de cookies via le cache NGINX.
Je voudrais ajouter que plusieurs options de configuration et combinaisons peuvent désactiver la mise en cache proxy dans Nginx. Malheureusement, cela est mal documenté.
Dans ma configuration, j'ai mis proxy_buffering on
et il a activé la mise en cache comme prévu.
après avoir parcouru plusieurs réponses et commentaires, j'ai trouvé que cette configuration fonctionnait enfin :
10m
=10mb
cache de clé, max_size
à 2GB
, inactive=120m
(rafraîchissement depuis la source après 120 minutes d'inactivité), use_temp_path=off
(pour réduire io)
proxy_cache_valid
- état du cache de 200
et 302
pendant 60 minutes
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;
}
}