Asegúrate de que tu backend no devuelva Set-Cookie
encabezamiento. Si Nginx lo ve, deshabilita el almacenamiento en caché.
Si este es tu caso, la mejor opción es arreglar tu backend. Cuando reparar el backend no es una opción, es posible indicarle a Nginx que ignore Set-Cookie
encabezado
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
Ver la documentación
proxy_ignore_header
se asegurará de que se lleve a cabo el almacenamiento en caché. proxy_hide_header
se asegurará de que la carga útil de la cookie no se incluya en la carga útil almacenada en caché. Esto es importante para evitar filtrar cookies a través de la caché de NGINX.
Me gustaría agregar que múltiples opciones de configuración y combinaciones pueden deshabilitar el almacenamiento en caché de proxy en Nginx. Desafortunadamente, esto está mal documentado.
En mi configuración puse proxy_buffering on
y habilitó el almacenamiento en caché como se esperaba.
después de revisar múltiples respuestas y comentarios, encontré que esta configuración finalmente funciona:
10m
=10mb
caché de claves, max_size
a 2GB
, inactive=120m
(actualizar desde la fuente después de 120 minutos de inactividad), use_temp_path=off
(reducir io)
proxy_cache_valid
- estado de caché de 200
y 302
durante 60 minutos
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;
}
}