Amazon Linux 2版Elastic Beanstalk .NET Core项目Nginx配置扩展方法
Amazon Linux 2 版本Elastic Beanstalk调整Nginx请求体大小配置指南
你当前配置不生效的核心原因有两个:
- 配置放置的层级不对,.NET Core平台默认Nginx配置中
client_max_body_size定义在server块内,你放在http层级的conf.d配置会被server块的默认值覆盖 - .NET Core项目执行
dotnet publish时默认不会把根目录的.platform文件夹复制到发布输出目录,很多时候配置文件根本没被打包进部署包,EB自然加载不到
推荐配置方案(无版本兼容风险)
按如下结构在项目根目录创建文件夹和配置文件:
|-- .platform `-- nginx `-- conf.d `-- elasticbeanstalk `-- server.conf
在server.conf中写入你需要的配置,数值按需调整:
client_max_body_size 100M;
注意:打包部署前,一定要确认
.platform文件夹存在于部署压缩包的根目录,和你发布后的.NET Core程序入口dll在同一层级,不要放在项目源码子目录里。
备选方案(部署脚本动态修改)
如果不想调整配置目录结构,也可以通过部署钩子直接修改默认Nginx配置:
- 在项目根目录创建如下结构:
|-- .platform `-- hooks `-- predeploy `-- set_body_size.sh - 脚本内容如下,数值按需修改:
#!/bin/bash sed -i 's/client_max_body_size 1M;/client_max_body_size 100M;/g' /etc/nginx/nginx.conf - 本地执行命令给脚本加可执行权限,避免部署时报权限错误:
chmod +x .platform/hooks/predeploy/set_body_size.sh
配置校验方式
部署完成后可以通过两种方式确认配置生效:
- 登录实例执行
nginx -T,全局搜索client_max_body_size,确认最终加载的参数值为你设置的数值 - 测试上传大于默认1M的文件,确认不再返回
413 Request Entity Too Large错误
避坑提示:不要直接覆盖整个
/etc/nginx/nginx.conf主配置文件,后续Elastic Beanstalk平台版本更新可能调整默认Nginx配置结构,全量覆盖容易导致Nginx启动失败,增量修改的方式兼容性最好。
内容的提问来源于stack exchange,提问作者Sunil Yadav
相关产品推荐
相关产品推荐

