Nginx可以通过proxy_cache模块实现动态缓存。该模块可以缓存网站的响应内容,并在后续请求时直接返回缓存内容,以减少对后端服务器的访问次数。
proxy_cache指令用于开启缓存,并指定缓存文件存储路径:
proxy_cache_path path [levels=levels] keys_zone=name:size
[inactive=time] [max_size=size]...;
- path:缓存文件存储路径
- levels:目录层级,最多3层
- name:缓存区域名称
- size:缓存区域大小
keys模块用于指定缓存的key,一般为请求url:
proxy_cache_key $uri$is_args$args;
缓存相关指令:
- proxy_cache:指定缓存区域名称,开启缓存
- proxy_cache_valid:指定缓存时间,超时后重新从源服务器获取
- proxy_cache_bypass:跳过缓存的条件,如HEAD请求或访问源服务器失败等
- proxy_cache_purge:用于手动清除缓存,格式为:proxy_cache_purge zone_name url
配置示例:
# 缓存文件路径及缓存区配置
proxy_cache_path /data/nginx/cache levels=1:2
keys_zone=cache_one:200m inactive=1d max_size=30g;
server {
location / {
proxy_cache cache_one; # 开启缓存,指定缓存区名称
proxy_cache_key $uri$is_args$args; # 缓存key
proxy_pass http://backend; # 代理请求到后端服务器
# 缓存1天,请求时间超过1天重新获取
proxy_cache_valid 1d;
}
}