use_temp_path=off可避免跨文件系统rename失败、提升缓存写入成功率和响应速度;需在proxy_cache_path中显式关闭,并确保缓存目录空间充足、权限正确且支持原子写入。

直接在 proxy_cache_path 中设置 use_temp_path=off 即可跳过临时写入再移动的过程,显著提升缓存写入成功率和响应速度,尤其在负载均衡场景下能减少跨设备 rename 失败、避免缓存持续 MISS 或 BYPASS。
为什么负载均衡中 use_temp_path=on 容易出问题
默认开启时,Nginx 先把响应体写入系统临时目录(如 /var/tmp/nginx_temp),再用 rename() 移到最终缓存路径。但该系统调用要求源与目标必须在同一个挂载点 —— 而负载均衡节点常存在以下情况:
- 缓存目录挂载在独立 SSD 或容器卷(如
/data/nginx/cache),而系统临时目录在根分区或另一块磁盘上 - 多节点部署时,各机器挂载策略不一致,部分节点使用 NFS、APFS 加密卷或 overlayfs,不支持原子 rename
- 结果表现为:X-Proxy-Cache 始终为 MISS/BYPASS,
/var/tmp/下堆积大量未清理的.tmp文件,缓存命中率归零
正确配置 use_temp_path=off 的关键步骤
只需在 http 块中定义缓存路径时显式关闭,并确保目标目录满足基础条件:
- 在
proxy_cache_path指令末尾添加use_temp_path=off - 缓存路径需由 Nginx 进程可写,且所在文件系统预留足够空间(峰值流量下完整响应体将全部落在此处)
- 无需额外配置
proxy_temp_path,Nginx 会直接写入目标目录
示例配置:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=lb_cache:20m max_size=5g inactive=30m use_temp_path=off;
关闭后必须同步检查的两项
use_temp_path=off 改变了数据落地路径,需重点验证:
-
磁盘空间是否充足:缓存目录所在分区需承载全部缓存内容,不能依赖系统临时目录分摊压力;建议预留 ≥1.5 倍
max_size的可用空间 -
文件系统是否支持原子写入:NFS、某些容器卷(如早期 Docker volume)、APFS 加密卷可能不支持安全的原子重命名或直接覆盖;若不确定,可在该目录下执行
touch test && mv test test2验证是否报错
如何验证配置已生效
重启 Nginx 后,通过两个层面确认:
- 用
curl -I多次请求同一资源,观察响应头中X-Proxy-Cache是否稳定返回HIT(而非始终MISS或BYPASS) - 检查缓存目录结构:
find /data/nginx/cache -name "*.tmp"应无输出;同时可见按levels=1:2生成的子目录及实际缓存文件










