Nginx的client_body_temp目录由client_body_temp_path指令动态指定,须用绝对路径手动配置并初始化权限,推荐独立SSD挂载、设1 2层级子目录,且不可与其他temp路径共用磁盘。

Nginx 的 client_body_temp 目录不是固定路径,而是由 client_body_temp_path 指令动态控制的临时文件存储位置。它不随安装自动生成独立目录,也不在配置文件中默认显式声明——必须手动配置并确保路径可用,否则大文件上传会失败或退回到系统默认(如 /tmp)带来风险。
client_body_temp_path 配置要点
- 必须使用绝对路径,不能是相对路径或符号链接
- 建议挂载独立 SSD 分区(如
/mnt/ssd/nginx-upload),避免与系统盘或日志盘争抢 I/O - 子目录层级推荐设为
1 2或2 2:生成最多 16×256 = 4096 个二级子目录,有效分散文件、防止单目录 inode 耗尽 - 示例配置:
client_body_temp_path /mnt/ssd/nginx/client_body 1 2;
权限与初始化操作
- 创建目录并赋权(以
www-data为例,根据实际 worker 用户调整):mkdir -p /mnt/ssd/nginx/client_body chown -R www-data:www-data /mnt/ssd/nginx/client_body chmod 750 /mnt/ssd/nginx/client_body
- 若该磁盘是单独挂载的,请在
/etc/fstab中添加noatime参数减少元数据写入:/dev/nvme0n1p1 /mnt/ssd ext4 defaults,noatime 0 0
不能和其它 temp 路径混用
-
proxy_temp_path、fastcgi_temp_path等应各自指向不同物理磁盘 - 尤其避免
client_body_temp_path和proxy_temp_path共用同一挂载点,否则上传请求体与后端响应体同时落盘时会互相干扰、I/O 拥塞
验证是否生效
- 上传一个大于
client_body_buffer_size(如设为 16k)的文件(例如 2MB 图片) - 检查目标路径下是否生成类似
/mnt/ssd/nginx/client_body/a/1f/0000000001的哈希子目录及临时文件 - 同时查看
error.log是否出现could not open temp file或权限拒绝类报错
不复杂但容易忽略


















