Nginx全站缓存需在http块顶层配置proxy_cache_path,包含路径、levels、keys_zone、max_size四要素,推荐加inactive和use_temp_path,并验证X-Proxy-Cache响应头及缓存目录结构。

直接在 http 块顶层用 proxy_cache_path 指令就能定义全站通用的磁盘缓存空间,这是 Nginx 缓存机制的起点。关键不是“加一行”,而是路径、内存区、清理策略三者配齐,且位置必须正确。
必须放在 http 块顶层,不能嵌套
proxy_cache_path 只能在 http 上下文中使用,严禁写在 server 或 location 块内,否则 Nginx 启动会报错。
- 确保它位于
http { ... }大括号内部,和其他全局配置(如include mime.types;)同级 - 一个
http块可定义多个缓存路径,但每个keys_zone名称必须唯一,且区分大小写、不含空格或特殊字符
四个核心参数缺一不可
最简可用配置必须包含以下四要素,否则缓存无法初始化:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
-
路径:指定绝对路径,如
/var/cache/nginx/proxy_cache;需提前执行mkdir -p /var/cache/nginx/proxy_cache并赋予 Nginx 工作用户(如www-data或nginx)读写权限 -
levels:推荐
levels=1:2,生成两级子目录(如a/3f/xxx),避免单目录文件爆炸影响 inode 查找性能 -
keys_zone:格式为
name:size,如my_cache:10m;这块内存不存响应体,只存 key 和元数据,10MB 约支持 8 万个缓存项 -
max_size:硬性磁盘限额,如
max_size=2g;超限时 Nginx 自动按 LRU 清理最久未用的缓存文件
建议加上自动清理与稳定写入选项
仅靠 max_size 不够稳妥,搭配 inactive 和 use_temp_path 才能更可控:
-
inactive=60m:60 分钟内未被访问的缓存项,无论是否过期,都会被后台进程主动删除 -
use_temp_path=off:禁用临时路径,让缓存文件直接落盘到目标目录,减少一次拷贝,提升写入效率和稳定性(尤其跨文件系统时) - 若缓存目录挂载在 SSD 上,建议单独分区并预留 ≥1.5×
max_size的可用空间
验证是否生效
配置完成后重启 Nginx,再通过真实请求验证:
- 检查响应头中是否出现
X-Proxy-Cache: HIT或MISS - 进入缓存路径,确认已生成符合
levels结构的真实子目录和缓存文件(非空目录或残留.tmp) - 观察日志或
df -h,确认磁盘使用随流量增长而变化

















