Nginx返回413错误是因请求体超默认1MB限制,需在http/server/location块中配置client_max_body_size并重载;同时后端限制须≥Nginx值。

413 错误说明 Nginx 拒绝了当前请求,因为请求体(比如上传的文件、大表单)超过了它允许的最大尺寸。默认只允许 1MB,上传稍大点的文件就会触发这个报错。
确认是不是 Nginx 返回的 413
打开浏览器开发者工具 → Network 标签页 → 找到失败的请求 → 查看响应头中的 Server 字段:
- 如果显示 Server: nginx,就是 Nginx 自己拦下的,要调它的配置;
- 如果显示 Server: gunicorn、Server: Apache 或其他后端服务名,说明 Nginx 已转发,是后端框架或服务器限制的,需同步调整后端;
- 若用了多层代理(如 Nginx → API 网关 → Spring Boot),每一层都可能设限,得逐层检查。
修改 Nginx 的 client_max_body_size
这是最核心的一步。该指令控制 Nginx 是否接收并转发该请求体,单位支持 k、m、g(如 200M),设为 0 表示不限制(慎用):
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 全局生效(影响所有站点):在
http{}块里加:client_max_body_size 200M; - 仅某域名生效:在对应
server{}块里加:client_max_body_size 100M; - 仅某路径生效(推荐用于上传接口):在
location /api/upload { }里加:client_max_body_size 500M;
改完必须重载生效:sudo nginx -s reload 或 sudo systemctl reload nginx
同步调整后端服务限制
Nginx 放行后,后端仍可能因自身限制再次报 413。务必保证后端允许的大小 ≥ Nginx 设置值:
-
Spring Boot(application.yml):
spring.servlet.multipart.max-file-size: 500MBspring.servlet.multipart.max-request-size: 500MB -
PHP(php.ini):
upload_max_filesize = 500Mpost_max_size = 500M -
Node.js(如 Express + multer):
初始化 multer 时指定limits: { fileSize: 524288000 }(单位字节)
顺带检查几个易忽略点
多数情况调好 client_max_body_size 就够了,但遇到边缘问题可排查:
-
client_header_buffer_size和large_client_header_buffers控制请求头大小,和 413 无关,别误调; - 大文件上传时若开启
proxy_buffering on,可能因内存不足失败,可尝试关掉:proxy_buffering off;(配合proxy_buffer_size 128k调整); - HTTPS 场景下一般无需额外操作,SSL 缓冲区默认足够。

















