proxy_cache_path指令用于在nginx中定义本地磁盘缓存目录结构,必须置于http块内,至少需指定path和levels参数,配合keys_zone等参数实现缓存管理与清理。

通过 proxy_cache_path 指令,Nginx 可以在本地磁盘上创建一个用于缓存后端响应的目录结构,并配置其大小、清理策略和存储方式。它必须定义在 http 块中,是启用代理缓存功能的前提。
基础语法与必需参数
proxy_cache_path 至少需要指定缓存路径和 levels 两个参数,否则 Nginx 启动会报错。典型写法如下:
-
path:缓存文件存放的根目录(如
/var/cache/nginx/proxy_cache),需确保 Nginx 工作进程有读写权限 -
levels:定义缓存目录的层级结构,格式为
levels=1:2表示两级子目录,第一级 16 进制字符 1 位,第二级 2 位,用于分散文件、避免单目录下文件过多 -
keys_zone:必填项,格式为
name:size,例如my_cache:10m,表示创建名为my_cache的共享内存区,用于存放缓存 key 和元数据,10MB 通常可支持约 8 万个缓存条目
常用可选参数与作用
这些参数控制缓存生命周期、磁盘使用和过期行为,按实际需求选择设置:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
-
inactive:指定缓存项在多长时间内未被访问就自动删除,例如
inactive=1h,注意这不是 TTL,不依赖响应头中的Cache-Control -
max_size:限制整个缓存区占用磁盘的最大容量,如
max_size=5g,超出时 Nginx 会按 LRU 清理最久未用的缓存 -
use_temp_path:默认为
on,表示先写临时文件再重命名;设为off可减少 IO,但要求path和上游服务器在同一文件系统 - purger 和 purger_frequency:仅在启用缓存清理模块时有效,用于主动扫描并删除过期缓存(非默认模块,需编译时加入)
完整配置示例
以下是一个生产环境常用的缓存路径定义:
proxy_cache_path /var/cache/nginx/proxy_cachelevels=1:2
keys_zone=my_cache:20m
inactive=30m
max_size=2g;
其中:
– 20m keys_zone 可支撑约 16 万缓存 key
– inactive=30m 保证冷数据及时释放空间
– max_size=2g 防止缓存无节制增长影响磁盘可用性
注意事项与常见问题
配置生效前需确认几个关键点:
- 缓存路径目录需提前创建,并由 Nginx worker 进程用户(如
www-data或nginx)拥有写权限 -
keys_zone大小不足会导致缓存命中率下降甚至拒绝新缓存,可通过nginx -t检查语法,用nginx -V查看是否启用--with-http_ssl_module等依赖模块 - 该指令只定义缓存区,真正启用缓存还需在
location中配合proxy_cache my_cache和proxy_cache_valid等指令 - 若使用 NFS 或网络存储,建议关闭
use_temp_path并谨慎评估性能与一致性风险










