上传大图片时Nginx报413 request entity too large错误的原因
413 Payload Too Large 错误排查方案
核心错误原因:Tomcat 的 max-swallow-size 限制
你设置的 server.tomcat.max-swallow-size=2MB 是关键问题。这个参数的作用是:当 Tomcat 已经拒绝请求(比如因为请求体过大)时,限制它继续读取的请求体大小。当上传的图片超过2MB时,Tomcat 会触发这个限制,直接返回413错误,哪怕你已经把multipart的上限设为50MB。
排查与修复步骤
- 调整 Tomcat 的 max-swallow-size 参数:
将配置改为server.tomcat.max-swallow-size=50MB(和multipart上限一致),或者设为-1(完全不限制),这样Tomcat就能完整接收超过2MB的请求体。 - 验证 Nginx 配置是否完全生效:
虽然你在全局和http块设置了client_max_body_size 100M,但要检查反向代理的location块里有没有单独设置这个参数(如果有,会覆盖全局配置)。可以通过执行nginx -t验证配置语法,然后重启Nginx确保修改生效。 - 确认Spring Boot控制器参数接收正确:
确保文件参数用@RequestParam("file") MultipartFile file接收(file要和前端FormData里的键名完全匹配),避免因为参数绑定问题间接引发请求异常。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

