Elastic Beanstalk首次部署时自定义Nginx配置不生效问题咨询
问题结论
该情况不属于Elastic Beanstalk(EB)的预期行为。按照官方设计,存放在.platform目录下的自定义Nginx配置,会在环境首次创建、应用版本部署过程中自动加载并重启Nginx生效,无需额外手动重启应用服务器。
常见触发原因
- 目录结构不符合要求:
.platform文件夹必须放在应用部署包的根目录,和应用业务代码同级,且路径、文件名大小写完全匹配要求(Linux环境大小写敏感),如果首次部署时路径错误,EB无法识别到自定义配置,就会使用默认的Nginx配置启动。 - 配置依赖缺失:你提供的
https.conf中引用了SSL证书文件/etc/pki/tls/certs/server.crt和server.key,如果首次创建环境时,证书文件还未通过配置同步到对应路径,Nginx加载配置时会报错,自动回退到默认配置运行,后续重启应用服务器时证书已同步完成,自定义配置就能正常加载。 - 平台版本已知Bug:部分旧版本的Amazon Linux 2 EB平台存在已知缺陷,首次环境创建时不会主动加载
.platform下的反向代理配置,只有重启应用服务器才会触发配置扫描,升级到对应平台的最新版本即可解决。
修复方案
你可以通过添加EB扩展配置强制部署完成后重启Nginx,保证首次创建时配置就能生效,在应用根目录的.ebextensions/00_nginx_fix.config中添加如下内容:
container_commands: 01_restart_nginx: command: "systemctl restart nginx" ignoreErrors: false
同时建议首次部署后配置未生效时,查看实例上/var/log/nginx/error.log和/var/log/eb-engine.log日志,确认是否存在配置加载错误。
相关配置参考
.platform/nginx/conf.d/elasticbeanstalk/00_application.conf
(作用:覆盖EB默认生成的配置,新增X-Forwarded-Proto请求头)
location / { proxy_pass http://127.0.0.1:8000; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; }
.platform/nginx/conf.d/https.conf
(作用:新增HTTPS 443端口监听,配置SSL规则)
server { listen 443 ssl; server_name localhost; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/certs/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log main; # 引入EB自动生成的location配置 include conf.d/elasticbeanstalk/*.conf; }
内容的提问来源于stack exchange,提问作者gowthz
相关产品推荐
相关产品推荐

