迁移至Amazon Linux 2后Nginx配置引发EB部署失败及配置失效问题
解决Amazon Linux 2上Elastic Beanstalk部署失败及Nginx配置不生效问题
问题背景
从Java 8+Amazon Linux 1迁移到Corretto 8+64位Amazon Linux 2/3.5.1后,按照要求替换.ebextensions为.platform文件夹存放自定义Nginx配置,但遇到两个问题:
- 携带
.platform文件夹部署时一直失败,移除或重命名该文件夹后应用可正常启动,但只能使用默认配置 - 后来成功部署war包,
.platform/nginx/conf.d/myconfig.conf里的client_max_body_size 20M;配置始终不生效,手动SSH到服务器添加配置并重启Nginx才有效,但无法每次部署都手动操作
排查过程
- 尝试两种Nginx配置方式:
- 在
.platform/nginx/conf.d/myconfig.conf中添加client_max_body_size 20M; - 直接用自定义的
nginx.conf覆盖默认配置,放在.platform/nginx/nginx.conf
- 在
- 查看EB推荐的eb-engine日志,未找到近期有效错误信息
- 手动验证配置有效性:SSH到服务器添加配置并重启Nginx后,配置生效,说明配置内容本身没问题
问题根源
文件结构不符合Amazon Linux 2的要求!
之前在Amazon Linux 1上正常的结构:
Root - .platform - WEB-INF - META-INF
Amazon Linux 2要求的正确结构:
Root - .platform - my-app.jar
原来适配AL1的Maven复制.platform文件夹的任务,已经不适用于AL2的打包结构要求。
修复方法
调整Maven打包配置,确保最终构建产物的根目录下同时存在.platform文件夹和应用jar包,让.platform与jar包处于同一层级,而非和WEB-INF、META-INF同级。重新打包部署后,Nginx配置会被正确加载。
内容的提问来源于stack exchange,提问作者Unknown
相关产品推荐
相关产品推荐

