nginx 缓存相关指令
proxy_cache
缓存命名空间
- 语法:proxy_cache zone / off;
- zone: 共享内存名称
- 默认值:proxy_cache off;
- 上下文:http、server、location
proxy_cache_path
缓存配置路径、进程控制缓存参数
- 语法:proxy_cache_path path keys_zone=name:size
- path: 路径
- keys_zone: 名称:大小, 在共享内存中设置一块存储区域来存放缓存的key字符串,这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key;
- 默认值:proxy_cache_path off
- 上下文:http
可选参数:
path: 磁盘缓存文件的存放路径
level:path 的目录层级
use_temp_path: 临时文件存放目录
- off:直接使用 path 路径
- on:使用 proxy_temp_path 路径
keys_zone:
- name: 共享内存名称
- size: 共享内存大小
inactive:LRU 缓存淘汰时间,即在指定时间内没有被访问缓存会被清理;默认 10 分钟
max_size: LRU 缓存文件大小,超过将由 CM(cache manager缓存管理进程)清理,占用硬盘空间
mananger_files: CM 清理一次缓存文件,最大清理文件数;默认 100
manager_sleep: CM 清理一次后进程的休眠时间;默认 200 毫秒
manager_threshold: CM 清理一次最长耗时;默认 50 毫秒
loader_files: CL(cache loader缓存加载进程)载入文件到共享内存,每批最多文件数; 默认 100
loader_sleep: CL 加载缓存文件到内存后,进程休眠时间;默认 200 毫秒
loader_threshold: CL 每次载入文件到共享内存的最大耗时;默认 50 毫秒
proxy_cache_key
缓存关键字,如何去查找缓存
- 语法:proxy_cache_key string;
- 默认值:proxy_cache_key $scheme$proxy_host$request_uri;
- 上下文:http、server、location
proxy_cache_valid
确定需要缓存是数据
- 语法:proxy_cache_valid [code...] time;
- 默认值:-
- 上下文:http、server、location
配置示例:
proxy_cache_valid 60m # 不指定 code 时只对 200、301、302 响应码缓存
upstream_cache_status
上游服务器缓存状态
- MISS: 未命中缓存
- HIT:命中缓存
- EXPIRED:缓存过期
- STALE:命中了陈旧缓存
- REVALIDDATED:Nginx 验证陈旧缓存依然有效
- UPDATING:内容陈旧,但正在更新
- BYPASS:响应从原始服务器获取
proxy_no_cache
配置不缓存特定内容
- 语法:proxy_no_cache string;
- string 变量名有值即不缓存
- 默认值:-
- 上下文:http、server、location
proxy_cache_bypass
配置不缓存特定内容
- 语法:proxy_cache_bypass string;
- 默认值:-
- 上下文:http、server、location
proxy_cache_methods
需要缓存的方法
- 语法:proxy_cache_methods string
- 默认值:POST
- 上下文:http、server、location