AWS Beanstalk EC2 Spring应用HTTP上传超1MB报ERR_CONNECTION_ABORTED
确认Spring应用自身的Multipart上传限制配置:
核对部署包内的application.properties/application.yml是否配置了适配的上传大小限制,Spring Boot 2.x及以上版本需添加以下配置(示例值按需调整):spring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-size=15MB
Spring Boot 1.x版本对应配置前缀为spring.http.multipart.*。注意确认配置已正确打入部署包,避免使用本地开发环境的临时配置而非生产配置调整Beanstalk默认Nginx反向代理的请求体限制:
Beanstalk Java运行平台默认前置的Nginx反向代理,默认client_max_body_size为1MB,刚好匹配1MB以上上传失败的阈值。
解决方法:在项目根目录新建.ebextensions文件夹,新增配置文件(如upload-size.config),写入以下内容后重新部署:files: "/etc/nginx/conf.d/proxy.conf": mode: "000644" owner: "root" group: "root" content: | client_max_body_size 20M; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s;如果Beanstalk平台使用Apache反向代理,对应调整
LimitRequestBody参数即可调整负载均衡器的请求体大小限制:
如果Beanstalk环境配置了负载均衡(而非单实例直连),应用负载均衡器(ALB)默认最大请求体大小为1MB,超过阈值会主动中断连接,直接触发ERR_CONNECTION_ABORTED报错。
调整方法:进入AWS EC2控制台的负载均衡页面,找到对应Beanstalk环境的ALB,修改属性中的请求体大小限制为实际需求值(如20MB),修改后无需重新部署Beanstalk即可生效。检查实例临时目录状态:
确认EC2实例的/tmp目录符合应用写入要求:- SSH登录实例后执行
df -h /tmp,确认目录剩余空间足够存储上传的临时文件 - 执行
ls -ld /tmp查看权限,确保应用运行用户(通常为webapp/tomcat)拥有写入权限,若权限不足可调整临时存储路径到应用专属可写目录(如/var/app/current/tmp)
- SSH登录实例后执行
内容的提问来源于stack exchange,提问作者Boldbayar

