Итак, я настроил кеш FastCGI следующим образом:
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;
}
И на вершине server{}
блок у меня есть:
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;
Проблема в том, что мой PHP-скрипт (vBulletin) всегда отправляет Pragma & Cache-Control private
. Есть ли способ игнорировать эти заголовки и заставить FastCGI использовать кеш, когда вышеуказанные правила не применяются? Я как бы потерялся в этой возможности кеширования.
Nginx интерпретирует набор заголовков при использовании в качестве обратного прокси-сервера для соблюдения спецификаций промежуточных кешей HTTP. Это означает, что следующие заголовки, если они присутствуют в ответах вашего приложения, изменят поведение кеширования, как описано:
В поле заголовка «X-Accel-Expires» задается время кеширования ответа в секундах. Нулевое значение отключает кеширование ответа. Если значение начинается с префикса @, оно устанавливает абсолютное время в секундах с начала эпохи, до которого ответ может быть кэширован.
Если в заголовке нет поля «X-Accel-Expires», параметры кеширования могут быть установлены в полях заголовка «Expires» или «Cache-Control».
Если заголовок включает поле «Set-Cookie», такой ответ не будет кэшироваться.
Если заголовок включает поле «Vary» со специальным значением «*», такой ответ не будет кэшироваться (1.7.7). Если в заголовке есть поле «Vary» с другим значением, такой ответ будет кэшироваться с учетом соответствующих полей заголовка запроса (1.7.7).
Однако nginx поставляется с fastcgi_ignore_headers
директива, если вы хотите отключить это. Итак, что вы ищете: fastcgi_ignore_headers Cache-Control Pragma;
.