proxy_cache_path 是 Nginx 反向代理缓存的核心指令,须置于 http 块内,统筹目录结构(path/levels)、内存索引(keys_zone)、生命周期(inactive/max_size)及性能优化(use_temp_path 等)。

proxy_cache_path 是 Nginx 中定义反向代理缓存存储的核心指令,必须写在 http 块内。它不只指定“文件存哪儿”,更关键的是统筹缓存的目录结构、内存索引、磁盘清理和性能优化策略。
缓存路径与目录层级(path + levels)
path 是缓存文件实际存放的根目录,例如 /var/cache/nginx/proxy_cache。该目录需提前创建,并确保 Nginx 工作进程(如 www-data 或 nginx 用户)有读写权限;推荐使用 SSD 存储以提升 I/O 效率。
levels 控制缓存文件如何分层存放,防止单目录下文件过多导致文件系统性能下降。格式为 levels=1:2(最多三级,每级数字表示子目录名长度):
-
levels=1:2:取缓存 key 的 MD5 值,最后 1 位作第一级目录名,其前 2 位作第二级目录名,其余部分作文件名。例如 MD5ca7869ae4f...→ 路径为/path/ca/786/... -
levels=2等价于levels=2:2:2,但 Nginx 实际只建两级子目录(忽略冗余级数) - 避免用
levels=1:1:1:虽能生成 4096 个一级目录,但单目录仍可能堆积大量文件,不均衡
内存索引区(keys_zone)
keys_zone 是必填项,用于在共享内存中建立缓存键(key)的元数据索引,不存真实响应体,只存 key、状态、过期时间等信息。格式为 name:size,如 my_cache:10m:
- 名称(如
my_cache)后续在proxy_cache my_cache中引用,必须严格一致 - 大小建议按预期活跃缓存条目估算:1MB 内存约支持 8000 个 key,10m 可支撑约 8 万个活跃项
- Nginx 重启后该内存区清空,但磁盘缓存文件仍保留,下次访问会自动重建索引
缓存生命周期与空间管理(inactive + max_size + use_temp_path)
这三个参数协同控制缓存的“存活”与“容量”:
-
inactive=60m:某缓存项若连续 60 分钟未被任何请求命中,无论是否过期,都会被自动删除 -
max_size=1g:整个缓存目录占用磁盘上限,超出时按 LRU(最近最少使用)策略淘汰旧条目;达到上限后新缓存将暂停写入,直到空间释放 -
use_temp_path=off:强烈建议关闭。默认为 on,Nginx 先将缓存写入临时路径再移动,易引发跨文件系统拷贝和双倍 I/O;设为 off 后直接落盘到目标路径,降低延迟
其他实用可选参数
除上述常用项外,还有几个进阶参数用于精细化运维:
-
loader_files=200 loader_sleep=50ms loader_threshold=200ms:控制 Nginx 启动时加载磁盘缓存索引的速度,避免瞬间高 I/O 影响服务响应 -
manager_files=200 manager_sleep=50ms manager_threshold=200ms:调节后台缓存管理器(cache manager)扫描和清理的节奏,防止频繁轮询干扰主线程 -
purger=on:启用主动清除机制,配合proxy_cache_purge指令实现按 key 精准清理(需第三方模块或较新版本原生支持)


















