AWS Elastic Beanstalk部署ASP.NET遇413请求实体过大问题求助
解决AWS Elastic Beanstalk部署ASP.NET时的413 Request Entity Too Large错误
问题背景
部署ASP.NET应用到Elastic Beanstalk时遇到413 request entity too large错误,尝试两种方案均存在问题:
- 在应用根目录的
.ebextensions/nginx/conf.d/proxy.conf中添加client_max_body_size 100M;,部署时触发CloudFormation错误:1/18/2023 11:59:22 AM Service:AmazonCloudFormation, Message:[/Resources/AWSEBAutoScalingGroup/Metadata/AWS::CloudFormation::Init/prebuild_0_RisksessAML/files//etc/nginx/conf.d/proxy.conf] 'null' values are not allowed in templates
- 通过SSH修改
/etc/nginx/nginx.conf添加配置后生效,但每次重新部署代码,该文件会被替换,配置丢失
正确解决方案
根据Elastic Beanstalk的环境版本,选择对应的配置方式:
针对Amazon Linux 1环境
- 在应用根目录创建
.ebextensions文件夹 - 在该文件夹下新建
01-nginx-max-body-size.config文件,写入以下YAML配置:
files: "/etc/nginx/conf.d/proxy.conf": mode: "000644" owner: root group: root content: | client_max_body_size 100M;
该配置会在部署时自动生成指定的nginx配置文件,避免CloudFormation解析时出现null值错误。
针对Amazon Linux 2环境
Amazon Linux 2对nginx配置结构做了调整,直接使用.platform目录即可:
- 在应用根目录创建
.platform/nginx/conf.d文件夹 - 在该文件夹下新建
proxy.conf文件,写入内容:
client_max_body_size 100M;
部署时Elastic Beanstalk会自动加载该目录下的配置文件,无需额外YAML定义,且配置不会被部署覆盖。
方案说明
- 第一种方案失败原因:直接在
.ebextensions下嵌套nginx配置文件,未通过YAML配置定义文件内容,导致CloudFormation无法正确识别文件数据,抛出null值错误 - 第二种方案失效原因:直接修改系统默认配置文件,Elastic Beanstalk每次部署会重新生成环境配置,自定义修改会被覆盖,必须通过部署包中的配置文件固化设置
内容的提问来源于stack exchange,提问作者muh.rafay
相关产品推荐
相关产品推荐

