fastcgi_temp_path 是 nginx 存储超内存 fastcgi 响应的临时磁盘目录,需手动创建、赋权,并与 fastcgi_cache_path 同分区;支持层级结构和大小控制,如 fastcgi_temp_path /var/cache/nginx/fastcgi_temp 1 2。

fastcgi_temp_path 是 Nginx 将 FastCGI 响应中超出内存缓冲区的部分写入磁盘时使用的临时目录。它不是缓存本身,而是“中转站”——当响应体太大、无法全放内存时,Nginx 会把多余内容暂存到这里,再逐步发给客户端或写入 fastcgi_cache_path。
配置它需注意三点:路径存在、权限可写、与缓存路径同分区。
路径必须提前创建且有写权限
Nginx 不会自动建目录,启动前要手动创建,并确保 nginx 工作用户(如 www-data 或 nginx)有读写权限:
sudo mkdir -p /var/cache/nginx/fastcgi_temp sudo chown www-data:www-data /var/cache/nginx/fastcgi_temp sudo chmod 700 /var/cache/nginx/fastcgi_temp
必须放在与 fastcgi_cache_path 相同的磁盘分区
这是硬性要求。因为 Nginx 内部使用 rename() 移动临时文件到缓存目录,而 rename() 跨分区会失败。例如:
- ✅ 缓存路径设在
/var/cache/nginx/fastcgi_cache,则 temp 路径也得在/var分区下; - ❌ 若
fastcgi_cache_path在/data/cache(独立挂载),fastcgi_temp_path却在/tmp(通常是内存 tmpfs),就会导致缓存写入失败。
支持多级目录结构和大小控制
语法为:
fastcgi_temp_path path [level1 [level2 [level3]]];
其中 level1:level2 表示子目录层级(如 1:2 生成两级哈希目录),但 fastcgi_temp_path 的 level 参数仅用于组织临时文件结构,不强制要求,一般写成:
fastcgi_temp_path /var/cache/nginx/fastcgi_temp 1 2;
还可配合:
-
fastcgi_max_temp_file_size 512m;—— 单个临时文件最大体积(设为0禁用磁盘写入); -
fastcgi_temp_file_write_size 32k;—— 每次写入磁盘的块大小,影响 I/O 效率,建议设为32k或64k。
示例完整片段(放在 http{} 块内)
fastcgi_cache_path /var/cache/nginx/fastcgi_cache levels=1:2 keys_zone=phpcache:256m inactive=1d max_size=1g; fastcgi_temp_path /var/cache/nginx/fastcgi_temp 1 2; fastcgi_max_temp_file_size 512m; fastcgi_temp_file_write_size 32k;
只要 /var/cache/nginx/ 在同一分区、目录已建好、权限正确,Nginx 就能正常启用 FastCGI 缓存流程。











