首页/网络/协议速查/413 Content Too Large 内容过大
HTTP 方法与状态码91 条

413 Content Too Large 内容过大

请求体超过服务器允许的大小上限,服务器拒收。Nginx 默认 client_max_body_size 1m,上传大文件最容易撞到它。

协议速查网络更新于 2026-10-13

413 是什么

413 Content Too Large 表示请求体超过了服务器允许的大小上限,服务器直接拒收。它绝大多数时候是配置问题而非程序缺陷:Nginx 默认 client_max_body_size 只有 1m,文件上传、批量导入、大 JSON 提交是最容易撞上的三类场景。规范里这个码原名 Payload Too Large,RFC 9110 起改用现名。

基本信息

语义请求体超出服务器接受上限
规范RFC 9110 §15.5.14
常见限制层Nginx client_max_body_size、Apache LimitRequestBody、Tomcat maxPostSize、Spring max-http-request-size
典型触发文件上传、批量接口、富文本与图片 Base64 提交
排查入口先看响应头是哪个 Server,再逐层核对阈值

Nginx 调整上传上限

Nginx 调整上传上限
server {
    client_max_body_size 100m;   # 默认 1m,上传接口常需上调
    client_body_timeout 60s;     # 大文件上传要同步放宽读超时
    proxy_read_timeout 300s;     # 反代到后端时后端处理大文件更慢
}
# 改完先校验语法再平滑重载
# nginx -t && nginx -s reload

逐层核对清单

所在层参数或表现注意点
反向代理/网关client_max_body_size默认 1m,最容易漏的一层
应用框架Tomcat maxPostSize、Spring max-http-request-size框架层拒绝常被统一记成 500
CDN/WAF请求体上限、单请求超时413 可能来自边缘节点,源站日志里什么都没有
对象存储直传用预签名 URL 绕过业务服务器大文件首选方案,可以从根上避开 413
上调上限前先评估内存与磁盘压力:请求体在落盘缓冲前会占用内存,盲目调到几百兆,并发上传时容易把服务器拖到 OOM。

排查顺序

  • 先用 curl -v 看响应头的 Server 字段,判断 413 是哪一层返回的
  • 对比直连源站与经过 CDN 的结果,快速锁定是否边缘节点拦截
  • 翻 Nginx error.log 里的 client intended to send too large body 记录
  • 核对后端框架的上传上限参数,框架层拒绝常被包装成 500
  • 确认真实请求体大小,multipart 边界与编码膨胀会让实际体积大于原始文件

根治方案

  • 大文件改走对象存储预签名直传,业务服务器只接收元数据,从根上避开限制
  • 批量接口改为服务端拉取或分片提交,避免单请求承载海量数据
  • 把网关、框架、CDN 三处的阈值统一登记在配置清单里,改动时同步
  • 在接口文档里写明体积上限与超限返回码,让调用方提前分片

易错点

  • 只在 Nginx 调大上限,后端框架仍按默认拒绝,表现为「有时 413、有时 500」,看起来毫无规律
  • 413 由 CDN 边缘节点返回时源站日志完全没有记录,只翻应用日志会一直找不到线索
  • 放宽 client_max_body_size 却忘了 client_body_timeout,大文件传到一半被掐断,用户看到的是「上传卡住」
  • 把大文件硬塞进业务接口,即使调大上限也持续占用应用内存与带宽,正确做法是改走对象存储直传

数据来源与参考

  • RFC 9110 §15.5.14 413
  • Nginx client_max_body_size 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌