所以,我设置了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;
}
在服务器{}块之上,我有:
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私有.当上述规则不适用时,有没有办法忽略这些标题并强制FastCGI使用缓存?我有点迷失在这种缓存的可能性中.
The “X-Accel-Expires” header field sets caching time of a response in
seconds. The zero value disables caching for a response. If the value
starts with the @ prefix,it sets an absolute time in seconds since
Epoch,up to which the response may be cached.If the header does not
include the “X-Accel-Expires” field,parameters of caching may be set
in the header fields “Expires” or “Cache-Control”.If the header
includes the “Set-Cookie” field,such a response will not be cached.If the header includes the “Vary” field with the special value “*”,
such a response will not be cached (1.7.7). If the header includes the
“Vary” field with another value,such a response will be cached taking
into account the corresponding request header fields (1.7.7).
但是,Nginx附带fastcgi_ignore_headers
指令,以防您想关闭它.所以你要找的是:fastcgi_ignore_headers Cache-Control Pragma;.