Nginx中proxy_cache_path须在http块配置,定义缓存路径、levels哈希层级、keys_zone内存区、max_size磁盘上限及inactive自动清理策略,并配合proxy_cache启用。

在 Nginx 中配置 proxy_cache_path,核心是定义缓存存放位置、层级结构、内存元数据区大小、磁盘空间上限及自动清理策略。该指令必须写在 http 块中(不能放在 server 或 location 内),且需配合 proxy_cache 指令才能生效。
缓存路径与基础参数设置
proxy_cache_path 至少需要指定一个本地目录路径和 levels、keys_zone 两个关键参数:
-
路径必须存在且 Nginx 进程有读写权限:例如
/var/cache/nginx/proxy_cache,需提前创建并设好属主(如chown nginx:nginx /var/cache/nginx/proxy_cache) -
levels=1:2表示两级子目录哈希结构(第一级 1 位十六进制,第二级 2 位),避免单目录文件过多影响性能 -
keys_zone=my_cache:10m定义名为my_cache的共享内存区,10MB 可存储约 8 万条缓存键(key)信息;实际大小按每条 key 约 128 字节估算
容量控制与自动清理机制
磁盘使用上限和过期清理逻辑靠以下参数协同实现:
-
max_size=1g限制整个缓存目录占用磁盘不超过 1GB;超出后 Nginx 会触发 inactive 清理流程 -
inactive=60m表示缓存项若 60 分钟内未被访问,就标记为“非活跃”,即使未过期也会被清理 -
use_temp_path=off推荐关闭,让临时文件直接写入缓存目录,避免跨文件系统导致的 rename 失败
完整配置示例与启用方式
在 http 块中添加:
proxy_cache_path /var/cache/nginx/proxy_cache
levels=1:2
keys_zone=my_cache:10m
max_size=1g
inactive=60m
use_temp_path=off;
再在 server 或 location 块中启用缓存:
-
proxy_cache my_cache;绑定前面定义的 keys_zone -
proxy_cache_valid 200 302 10m;指定哪些状态码缓存多久 -
proxy_cache_key $scheme$host$request_uri$is_args$args;自定义缓存键(可选,默认已较合理)
验证与调试要点
配置生效后可通过以下方式确认缓存是否工作:
- 检查响应头是否含
X-Cache: HIT或MISS(需在location中加add_header X-Cache $upstream_cache_status;) - 用
du -sh /var/cache/nginx/proxy_cache观察目录增长情况 - 查看 error 日志中是否有
cache manager process … exited类警告,说明清理异常


















