Nginx返回413错误是因为请求体超过默认1MB限制;需通过client_max_body_size指令在http、server或location块中调大限制(如100m),并同步调整后端及代理链路相关配置。

这条日志表示 Nginx 在接收客户端请求时,发现请求体(request body)的大小超过了它当前允许的上限,于是主动拒绝了该请求,并返回 HTTP 413(Request Entity Too Large)错误。
为什么会触发这个提示
根本原因是 Nginx 默认只允许最多 1MB 的请求体。当用户上传文件、提交大表单、调用含大量 JSON 数据的 API,或后端服务(如 Git、SVN、数据库还原接口)需要接收大体积数据时,很容易突破这个限制。
典型场景包括:
- 前端上传超过 1MB 的图片、视频、压缩包
- 调用 REST 接口提交含 Base64 编码附件的 JSON
- 使用 opc 系统执行数据库还原(日志曾记录超 2.6GB 请求体)
- 通过 WebDAV 或 SVN 提交大文件(如 .pdf、.sql)
日志中关键信息解读
例如这条真实日志:
- 3729822 bytes ≈ 3.56 MB —— 实际请求体大小
- POST /api/upload —— 出问题的具体接口路径
- client: 192.168.1.100 —— 发起请求的客户端 IP
- 没有后端访问日志 —— 说明请求在 Nginx 层就被拦截,根本没发往后端
如何定位和修改限制值
控制请求体大小的核心参数是 client_max_body_size,它可放在三个层级:
- http{ } 块:全局生效,影响所有 server 和 location
- server{ } 块:仅对该虚拟主机(域名或端口)生效
- location{ } 块:只对匹配该路径的请求生效(最灵活,推荐用于特定上传接口)
示例配置(支持单位:k / m / g):
location /api/upload {client_max_body_size 100m;
}
注意事项与常见疏漏
仅改 Nginx 不够,还需同步检查:
-
后端应用自身限制:PHP 需同步调整
upload_max_filesize和post_max_size;Java Spring Boot 要配spring.servlet.multipart.max-file-size - 代理链路中的其他组件:如果前面还套了 CDN、WAF 或另一层反向代理(如 Traefik),它们也可能有独立的 body 大小限制
-
单位大小写敏感:写成
50M或50m都可以,但50MB会报配置错误 -
修改后必须重载:运行
sudo nginx -t && sudo nginx -s reload,不是 restart


















