AWS ElasticBeanStalk大文件上传遇413错误求助
解决ElasticBeanStalk上Nginx 413 Request Entity Too Large错误
你踩的第一个误区:更换实例类型没用
t2.xlarge这类实例规格只影响计算、内存等硬件资源,和Nginx的请求大小限制完全无关,所以换实例根本解决不了413错误,属于无效操作。
正确的Nginx配置修改方式(核心)
直接在EC2实例里手动修改Nginx配置文件没用——ElasticBeanStalk在部署、环境更新时会覆盖默认配置,必须通过EB的.ebextensions配置来持久化修改:
- 在你的应用代码根目录创建
.ebextensions文件夹(不存在则新建) - 在此文件夹下新建一个配置文件,比如
nginx_upload_limit.config - 根据你的EB环境操作系统,写入对应配置:
针对Amazon Linux 1环境
files: "/etc/nginx/conf.d/proxy.conf": mode: "000644" owner: root group: root content: | client_max_body_size 50M; # 按需调整为25M以上的数值 container_commands: 01_reload_nginx: command: "service nginx reload"
针对Amazon Linux 2环境
Amazon Linux 2的Nginx配置路径不同,需要修改应用对应的配置文件:
files: "/etc/nginx/conf.d/elasticbeanstalk/00_application.conf": mode: "000644" owner: root group: root content: | client_max_body_size 50M; proxy_pass http://127.0.0.1:8080; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; container_commands: 01_reload_nginx: command: "systemctl reload nginx"
- 把包含
.ebextensions的代码重新部署到ElasticBeanStalk,EB会自动应用配置并重启Nginx。
额外检查点
- 确认你的Web应用本身有没有上传大小限制:比如Flask的
MAX_CONTENT_LENGTH、Django的DATA_UPLOAD_MAX_MEMORY_SIZE、Spring Boot的spring.servlet.multipart.max-file-size等,应用层限制也会导致上传失败。 - 如果是前端通过预签名URL直接上传到S3,应该绕过Nginx,不会触发这个错误——如果还是报错,检查是否请求先经过了Nginx转发,这种情况仍需调整Nginx配置。
内容的提问来源于stack exchange,提问作者chad
相关产品推荐
相关产品推荐

