-
Notifications
You must be signed in to change notification settings - Fork 0
61 Nginx配置fastcgi_cache
Jinxin Chen edited this page Dec 11, 2019
·
1 revision
Nginx除了可以使用代理层缓存之外,还可以使用FastCGI缓存,并且支持ngx_cache_purge模块来清理缓存
fastcgi_cache_path /data/nginx/cache/factcgi_cache levels=1:2 keys_zone=php:512m inactive=1d max_size=1g use_temp_path=off;
fastcgi_cache_path 参数说明:
- levels:目录层级,1:2表示2层目录结构存储,比如:/data/nginx/cache/factcgi_cache/c/29/b7f54b2df7773722d382f4809d65029c
- keys_zone:缓存key的共享内存区,1m可以存储8千个key
- inactive:缓存有效时间,如果经过该时间还没有被访问到,则删除该缓存
- max_size:缓存数据最大大小
- use_temp_path:是否将数据先写入临时文件(proxy_temp_path),再写入缓存目录
location ~ \.php$ {
# php
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# cache
fastcgi_cache php;
fastcgi_cache_valid 200 1h;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header cache-status $upstream_cache_status;
if ($request_uri ~* "admin/") {
set $skip_cache 1;
}
fastcgi_cache_bypass $skip_cache;
# add_header remote_addr $remote_addr;
# add_header cache-key "$scheme$request_method$host$request_uri";
}
location ~ /purge(/.*) {
allow 192.168.0.0/24;
deny all;
fastcgi_cache_purge php "$scheme$request_method$host$1";
}
参数说明:
- fastcgi_cache:指定使用哪个共享内存区缓存数据
- fastcgi_cache_key:缓存文件key,默认为完整的URL
- fastcgi_cache_valid:为不同的响应状态码设定缓存,如果只设定时间,则 200, 301, 302 都将同时被缓存
- fastcgi_ignore_headers :禁止代理服务器处理请求头,避免被Expires Cache-Control等参数影响缓存有效性。
- add_header cache-status $upstream_cache_status : 在响应头添加缓存命中状态,方便调试。
- fastcgi_cache_bypass:不为"0"的字符串就表示不缓存该内容。示例中,对于admin页面的内容,不做缓存。
对于缓存清理模块的allow ip用的是子网掩码的表示方式,24表示32位IP地址的前24位都为1,所以192.168.0.0/24的IP地址范围为:
192.168.0.0~192.168.0.255