Configuré el caché FastCGI de esta manera:
location ~ \.php(/.*)?$ {
fastcgi_cache RWI;
fastcgi_cache_valid 200 60m;
set $nocache 0;
if ($request_method = POST)
{
set $nocache 1;
}
if ($http_cookie ~ (rwi_userid*|rwi_password*)) {
set $nocache 1;
}
if ($request_uri ~* "/(vb/admincp/)") {
set $nocache 1;
}
fastcgi_no_cache $nocache;
fastcgi_cache_bypass $nocache;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:/var/www/vhosts/system/{domain}/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
Y encima del server{}
bloque tengo:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=RWI:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
add_header X-Cache $upstream_cache_status;
El problema es que mi script PHP (vBulletin) siempre envía un Pragma & Cache-Control private
. ¿Hay alguna forma de ignorar esos encabezados y forzar a FastCGI a usar caché cuando las reglas anteriores no se aplican? Estoy un poco perdido en esta posibilidad del almacenamiento en caché.
Respuesta1
Nginx interpreta un montón de encabezados cuando se usa como proxy inverso para respetar las especificaciones de cachés intermedias HTTP. Esto significa que los siguientes encabezados, si están presentes en las respuestas de su aplicación, cambiarán el comportamiento del almacenamiento en caché como se explica:
El campo de encabezado "X-Accel-Expires" establece el tiempo de almacenamiento en caché de una respuesta en segundos. El valor cero deshabilita el almacenamiento en caché de una respuesta. Si el valor comienza con el prefijo @, establece un tiempo absoluto en segundos desde la Época, hasta el cual la respuesta puede almacenarse en caché.
Si el encabezado no incluye el campo "X-Accel-Expires", los parámetros de almacenamiento en caché se pueden configurar en los campos del encabezado "Expires" o "Cache-Control".
Si el encabezado incluye el campo "Establecer cookie", dicha respuesta no se almacenará en caché.
Si el encabezado incluye el campo "Variar" con el valor especial "*", dicha respuesta no se almacenará en caché (1.7.7). Si el encabezado incluye el campo "Variar" con otro valor, dicha respuesta se almacenará en caché teniendo en cuenta los campos del encabezado de solicitud correspondientes (1.7.7).
Sin embargo, nginx viene con elfastcgi_ignore_headers
directiva en caso de que desee desactivar esto. Entonces lo que estás buscando es: fastcgi_ignore_headers Cache-Control Pragma;
.