将 proxy_cache_path 指向 tmpfs(如 /dev/shm/nginx_cache)可使 nginx 缓存完全运行于内存,消除磁盘 i/o,延迟低至 0.2ms;需创建隔离子目录、设属主权限、关闭 use_temp_path,并配合 open_file_cache 降低 cpu 开销,但缓存不持久,重启即失,需监控内存占用并预热。

直接把 proxy_cache_path 指向 tmpfs 路径,是让 Nginx 缓存真正跑在内存里的最有效方式。这不是“加速缓存”,而是把磁盘 I/O 彻底去掉——缓存文件写入和读取都发生在 RAM 中,响应延迟可压到 0.2 ms 左右。
用 /dev/shm 创建专用缓存目录
不要直接往 /dev/shm 根下写配置,而是建隔离子目录,比如:
- 执行
mkdir -p /dev/shm/nginx_cache - 确保属主为 nginx 用户:
chown nginx:nginx /dev/shm/nginx_cache - 权限设为
755即可,无需额外授权,worker 进程默认可读写
在 nginx.conf 中配置 proxy_cache_path
把缓存路径明确指向该 tmpfs 目录,并关闭临时路径避免双写:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
proxy_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=my_cache:10m inactive=1h max_size=512m use_temp_path=off;-
levels=1:2保持合理层级,避免 inode 压力过大 -
max_size=512m是硬上限,tmpfs 实际占用受系统可用内存约束,建议不超过物理内存的 30% -
use_temp_path=off必须关闭,否则仍会先写磁盘临时目录再 move,失去内存优势
配合 open_file_cache 提升元数据效率
即使缓存本体在内存,Nginx 打开文件句柄、读取 inode 仍需系统调用。启用文件句柄缓存能进一步减少开销:
open_file_cache max=1000 inactive=60s;open_file_cache_valid 60s;open_file_cache_min_uses 2;- 这组配置对 tmpfs 下的 cache 文件同样生效,实测可降低 10%–15% 的 CPU 开销
注意重启与容量风险
tmpfs 缓存不具备持久性,需接受以下事实:
- 机器重启或 OOM killer 触发时,整个
/dev/shm/nginx_cache内容清空 - 不适用于必须强一致或冷启动即高命中场景,需搭配主动预热(如启动后 curl 一批关键 URL)
- 监控
df -h /dev/shm和free -h,防止缓存撑爆内存影响其他服务










