fastcgi_cache_path 配置需路径、层级、内存区、权限四者协同:路径须为真实专用子目录(如宝塔用/www/server/nginx/cache/fastcgi),levels=1:2避免inode过载,keys_zone按业务规模设内存(如wordpress站256m),use_temp_path=off防写入失败,且必须由www用户完全掌控权限。

缓存物理路径必须真实存在且属主正确
路径不能是临时目录(如 /tmp 或 /dev/shm),也不建议用相对路径或未挂载的分区。推荐使用 Nginx 主目录下的专用子路径:
- 宝塔环境:
/www/server/nginx/cache/fastcgi - phpEnv 环境:
/www/phpenv/nginx/fastcgi_cache
创建后必须由 Nginx 工作用户(通常是 www)完全掌控:
sudo mkdir -p /www/server/nginx/cache/fastcgisudo chown -R www:www /www/server/nginx/cache/fastcgisudo chmod -R 755 /www/server/nginx/cache/fastcgi
验证是否真正可写:sudo -u www touch /www/server/nginx/cache/fastcgi/test,无报错才算生效。
levels=1:2 不是可选项,而是性能刚需
所有缓存文件按哈希值分散到多级子目录中,避免单目录 inode 过载。例如 levels=1:2 会生成类似 a/ab/xxx 的结构,支持百万级缓存项仍保持低查找延迟。
省略 levels 或设为 levels=0,会导致全部缓存挤在一个目录,高并发下容易卡顿甚至失败。
keys_zone 名称与大小要贴合业务规模
keys_zone 是纯内存区域,存放缓存键(key)到磁盘路径的映射表,不占磁盘空间,但大小直接影响缓存命中率:
- 小流量站(日均 PHP 请求
- 中型 WordPress 站(含插件、AJAX):建议 256m 起步
- 高频 API 接口服务:可设为 512m,防止 key 驱逐过快导致频繁 MISS
命名建议带业务标识,如 WORDPRESS:256m 或 API_V1:512m,便于后期排查和多站点隔离。
inactive 和 use_temp_path 必须按场景显式设置
inactive=1d 表示缓存项若 24 小时内未被访问,就自动清理——这不是“过期时间”,不影响 fastcgi_cache_valid 定义的有效期,而是释放元数据空间。
use_temp_path=off 是强烈推荐项:它让 Nginx 直接写入最终缓存路径,跳过临时目录中转。不加这句,某些系统因 /tmp 权限或磁盘满,会导致缓存始终写入失败,X-Cache 显示 MISSED 或 BYPASS。
完整典型配置示例(放在 http{} 块内、所有 server{} 之前):
fastcgi_cache_path /www/server/nginx/cache/fastcgi levels=1:2 keys_zone=WORDPRESS:256m inactive=1d max_size=2g use_temp_path=off;











