client_body_buffer_size 不限制上传大小,只决定请求体存储方式:≤该值全内存处理,>则部分落盘;真正限制上传的是 client_max_body_size(默认1M,超限返回413),需在location块中配置并同步调优临时路径、超时及后端限制。

client_body_buffer_size 本身不直接限制上传文件大小,但它会影响上传过程的内存行为和后续限制是否生效。
client_body_buffer_size 的作用
该指令设置 Nginx 读取客户端请求体(如 POST 数据、文件上传内容)时所用的内存缓冲区大小。默认值通常是 8KB 或 16KB,具体取决于编译选项。
- 当上传内容 ≤ 缓冲区大小,Nginx 全部存入内存,不写临时文件
- 当上传内容 > 缓冲区大小,Nginx 将超出部分写入临时文件(路径由 client_body_temp_path 指定)
- 它不拒绝大文件,只决定“怎么存”——内存 or 磁盘
真正限制上传大小的是 client_max_body_size
这是控制上传文件总大小的硬性开关。若未显式设置,Nginx 默认为 1MB,超过即返回 413 Request Entity Too Large。
- 需在 http、server 或 location 块中配置,例如:
client_max_body_size 100M; - 该限制针对整个请求体(包括表单字段 + 文件),不是单个文件,但多数场景等效
- 若同时使用多个 location,以最内层生效的值为准
配合使用的其他关键参数
仅调大 client_max_body_size 不够,还需确保底层能处理大请求体:
- client_body_temp_path:确认临时目录存在、有写权限,且磁盘空间充足
- client_header_timeout 和 client_body_timeout:避免大文件上传因超时被中断(建议设为 300s 或更高)
- 后端应用(如 PHP、Python)也有自身限制(如 PHP 的
upload_max_filesize、post_max_size),必须同步调整
调试上传失败的常见线索
遇到 413 错误,按顺序排查:
- 检查 Nginx error log,搜索 “client intended to send too large body” —— 明确指向 client_max_body_size
- 确认配置已重载(
nginx -t && nginx -s reload) - 用
curl -v -F "file=@large.zip" http://yoursite/upload测试,观察响应头与状态码 - 若报 500 或静默失败,可能是后端超限或临时目录不可写,而非 Nginx 限制


















