Jor*_*ing 6 nginx cache fastcgi php-fpm
所以,我已经像这样设置了 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;
}
Run Code Online (Sandbox Code Playgroud)
在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;
Run Code Online (Sandbox Code Playgroud)
问题是我的 PHP 脚本 (vBulletin) 总是发送 Pragma & Cache-Control private
。当上述规则不适用时,有没有办法忽略这些标头并强制 FastCGI 使用缓存?我有点迷失在这种缓存的可能性中。
Xav*_*cas 10
当 Nginx 用作反向代理以遵守 HTTP 中间缓存规范时,它会解释一堆标头。这意味着以下标头(如果出现在您的应用回复中)将更改缓存行为,如下所述:
“X-Accel-Expires”标头字段以秒为单位设置响应的缓存时间。零值禁用响应缓存。如果该值以 @ 前缀开头,则它会设置自 Epoch 以来的绝对时间(以秒为单位),直到可以缓存响应为止。
如果头部不包含“X-Accel-Expires”字段,可以在头部字段“Expires”或“Cache-Control”中设置缓存参数。
如果标头包含“Set-Cookie”字段,则不会缓存此类响应。
如果标头包含具有特殊值“*”的“Vary”字段,则不会缓存此类响应(1.7.7)。如果标头包含具有另一个值的“Vary”字段,则将考虑到相应的请求标头字段(1.7.7)来缓存此类响应。
但是,fastcgi_ignore_headers
如果您想关闭它,nginx 会附带该指令。所以你要找的是:fastcgi_ignore_headers Cache-Control Pragma;
。
归档时间: |
|
查看次数: |
8108 次 |
最近记录: |