413错误本质是某层主动拒绝超限请求体,需先通过响应头(如server: nginx)定位拦截点;再按优先级在location/server/http块中显式设置client_max_body_size并重载,且后端限制须≥nginx值。

413 错误本质是请求体过大被某一层主动拒绝,排查关键在于准确定位拦截点,而不是盲目调大所有配置。
看响应头确认是不是 Nginx 拦的
用浏览器开发者工具或 curl -v 查看响应头:
- 如果出现 Server: nginx,说明 Nginx 自己拦下了,没转发给后端;
- 如果出现 Server: gunicorn / Spring Boot / uvicorn 等,说明 Nginx 放行了,但后端服务拒绝了;
- 如果响应里没有 Server 头,或显示的是网关类服务(如 Kong、Traefik),需继续向上查代理链。
查 Nginx 配置里的 client_max_body_size
这个值默认只有 1MB,必须显式设置才生效。注意作用域优先级:
- location 块里的设置 > server 块 > http 块;
- 上传接口路径(如
/api/upload)建议在对应 location 中单独设,比如:
location /api/upload { client_max_body_size 200M; } - 改完必须执行 nginx -s reload(不是 restart),否则不生效。
同步检查后端框架限制
Nginx 放行后,后端仍可能报 413。常见后端需匹配或大于 Nginx 的值:
-
Spring Boot:application.yml 中设
spring.servlet.multipart.max-file-size: 200MB和max-request-size: 200MB; -
Node.js(Express + multer):
multer({ limits: { fileSize: 209715200 } }); -
PHP:php.ini 中
upload_max_filesize和post_max_size都要调大,且后者 ≥ 前者。
留意多层代理和缓冲影响
有些场景下光调 body 大小还不够:
- 若用了 API 网关、CDN 或 WAF,它们也可能自带上传限制,需一并检查;
- 大文件上传时,
proxy_buffering on可能因内存不足导致失败,可临时设为 off; - HTTPS 下极少出问题,但若用了自定义 SSL 缓冲配置,也建议核对
ssl_buffer_size是否过小。











