配置fastcgi_cache_path需精细化定制:选/www/phpenv/nginx/fastcgi_cache等专用路径,设levels=1:2、keys_zone带业务标识、use_temp_path=off,并确保www用户完全可写。

配置 fastcgi_cache_path 不是填个路径就行,关键在“精细化定制”——要匹配实际负载、规避权限陷阱、适配站点特性,否则缓存永远不写入或频繁失效。
缓存路径位置与目录结构必须提前规划
路径不能选 /tmp 或 /dev/shm,phpEnv 和宝塔默认环境未做 SELinux 上下文或挂载策略适配,极易因权限拒绝静默失败。推荐统一用 Nginx 主目录下的子路径,例如:
-
/www/phpenv/nginx/fastcgi_cache(phpEnv 环境) -
/www/server/nginx/cache/fastcgi(宝塔环境)
levels=1:2 表示两级哈希目录(如 a/ab/...),能有效避免单目录文件过多导致的 inode 性能下降;不要省略 levels,否则所有缓存文件挤在一个目录,高并发下易卡顿。
keys_zone 命名与内存分配要贴合业务规模
keys_zone 是缓存元数据(key → 文件路径映射)存放区,纯内存驻留,不占磁盘空间。命名建议带业务标识,比如 WORDPRESS:128m 或 TP5_API:64m,方便后期排查。
立即学习“PHP免费学习笔记(深入)”;
- 小流量站(日均 PHP 请求 < 5 万):64m ~ 100m 足够
- 中型 WordPress 站(含插件、AJAX 频繁):建议 256m 起步
- API 接口服务(大量短生命周期响应):可设为 512m,避免 key 驱逐过快
注意:max_size 是磁盘缓存总上限(如 max_size=2g),和 keys_zone 内存无关,但两者需协同——若 keys_zone 太小而 max_size 很大,会导致 key 映射表满而新缓存无法建立。
inactive 与 use_temp_path 必须按场景取舍
inactive=30m 指缓存项在 30 分钟内未被访问就自动清理,不是“过期时间”,不影响 fastcgi_cache_valid 的有效期逻辑。对内容更新较慢的博客类站点可设为 1h 或 2h;对实时性要求高的后台接口,建议保持 10m~20m。
use_temp_path=off 是强烈推荐项:它让 Nginx 直接把缓存写入最终路径,跳过临时目录中转,避免因 /tmp 权限或磁盘满引发写入失败。不加这句,某些系统会因临时路径不可写导致缓存始终为 MISSED。
权限与属主必须由 www 用户完全掌控
无论你用 phpEnv 还是宝塔,Nginx 工作进程默认以 www 用户运行(不是 root 或 www-data)。执行以下三步缺一不可:
mkdir -p /your/cache/pathchown -R www:www /your/cache/pathchmod -R 755 /your/cache/path
验证是否真正生效:sudo -u www touch /your/cache/path/test,无报错才表示可写;再用 ps aux | grep nginx 确认 master 进程用户确实是 www。



















