Eu configurei o cache FastCGI assim:
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;
}
E no topo do server{}
bloco eu tenho:
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;
O problema é que meu script PHP (vBulletin) está sempre enviando um Pragma & Cache-Control private
. Existe alguma maneira de ignorar esses cabeçalhos e forçar o FastCGI a usar o cache quando as regras acima não se aplicam? Estou meio perdido nessa possibilidade de cache.
Responder1
O Nginx interpreta vários cabeçalhos quando usado como proxy reverso para honrar as especificações de caches intermediários HTTP. Isso significa que os seguintes cabeçalhos, se presentes nas respostas do seu aplicativo, alterarão o comportamento do cache conforme explicado:
O campo de cabeçalho “X-Accel-Expires” define o tempo de cache de uma resposta em segundos. O valor zero desativa o cache para uma resposta. Se o valor começar com o prefixo @, ele define um tempo absoluto em segundos desde a Época, até o qual a resposta pode ser armazenada em cache.
Se o cabeçalho não incluir o campo “X-Accel-Expires”, os parâmetros de cache poderão ser definidos nos campos do cabeçalho “Expires” ou “Cache-Control”.
Se o cabeçalho incluir o campo “Set-Cookie”, tal resposta não será armazenada em cache.
Se o cabeçalho incluir o campo “Vary” com o valor especial “*”, tal resposta não será armazenada em cache (1.7.7). Se o cabeçalho incluir o campo “Vary” com outro valor, tal resposta será armazenada em cache levando em consideração os campos correspondentes do cabeçalho da solicitação (1.7.7).
No entanto, o nginx vem com ofastcgi_ignore_headers
diretiva caso você queira desligá-la. Então o que você está procurando é: fastcgi_ignore_headers Cache-Control Pragma;
.