Есть вот такой кусок конфига:
fastcgi_cache_path /var/tmp/site/cache-html levels=1:2 keys_zone=cache_html:64m inactive=1y max_size=4g;
proxy_cache_path /var/tmp/site/cache-storage levels=1:2 keys_zone=cache_storage:64m inactive=1y max_size=4g;
location /index.php {
internal;
try_files /index.php =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param REQUEST_LANGUAGE $request_language;
fastcgi_pass unix:/etc/alternatives/php-fpm.sock;
fastcgi_cache cache_html;
fastcgi_cache_key $request_language/$request_uri_without_query;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
fastcgi_cache_background_update on;
fastcgi_cache_use_stale updating;
add_header x-fastcgi-cache $upstream_cache_status;
gzip off;
gunzip on;
}
php отдаёт такие заголовки
header('X-Accel-Expires: ' . (time() + MIN_EXPIRES), true);
header('Expires: ' . gmdate('D, d M Y H:i:s', (time() + MIN_EXPIRES)) . ' GMT', true);
header('Location: ' . getAuthUrl(), true, 302);
exit;
И nginx иногда навсегда кеширует этот ответ.
В заголовке x-fastcgi-cache почему-то "HIT", хотя там же видно, что Expires уже в прошлом, и в самом файле кеша вижу, что заголовки X-Accel-Expires и Expires уже в прошлом.
Причём закономерности такого поведения nginx нет, но, замечаю не первый раз такое форсированное кеширование именно страницы с редиректом, с другими страницами вроде всё норм, хотя все не проверить, их миллионы