单SSL证书适配多动态Elastic Beanstalk评审应用环境方案咨询
完全可以通过共享Application Load Balancer(ALB)或者前置Nginx反向代理的方式实现需求,无需动态新增DNS记录,两种可行落地方案如下:
方案1:共享Application Load Balancer(推荐,适配AWS Elastic Beanstalk生态)
- 提前仅配置1次泛解析DNS记录:将
*.review.ourdomain.com指向你预先创建好的共享ALB公网地址,后续所有评审应用都不需要再调整DNS配置 - 给共享ALB绑定你已经备好的
*.review.ourdomain.com通配符SSL证书,在443端口配置HTTPS监听,同时开启HTTP强制跳转HTTPS的规则 - 每个新评审应用的Elastic Beanstalk环境创建时,不需要单独配备公网负载均衡,直接将环境注册为共享ALB的独立目标组,给对应目标组配置基于主机头的路由规则:当请求域名匹配
review-app-<tag>.review.ourdomain.com时,转发到对应评审应用的目标组 - CI流程中只需要在EB环境创建完成后,调用AWS API给共享ALB新增对应主机头路由规则即可,规则生效延迟在10秒以内,完全适配CI工作流的时效要求
优势:无需额外运维反向代理服务,AWS托管ALB可用性高,配置逻辑和EB生态天然适配,路由规则更新无传播延迟
方案2:前置Nginx反向代理实现
如果不想使用共享ALB,也可以通过自建Nginx集群实现:
- 提前仅配置1次泛解析DNS:将
*.review.ourdomain.com指向Nginx集群的公网入口 - Nginx侧统一绑定
*.review.ourdomain.com通配符SSL证书,配置全局HTTPS监听 - CI流程创建完EB环境后,自动生成对应Nginx路由配置段,参考配置如下:
server { listen 443 ssl; server_name review-app-<tag>.review.ourdomain.com; ssl_certificate /path/to/wildcard_ssl.crt; ssl_certificate_key /path/to/wildcard_ssl.key; location / { proxy_pass http://<对应EB环境的负载均衡内网域名>; 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; } }
- 配置生成后自动reload Nginx即可生效,生效延迟为秒级,无DNS传播问题
优势:灵活度高,可自定义路由规则、限流、访问控制等额外逻辑
两种方案都只需要做一次泛解析DNS配置,后续新增评审应用完全不用修改DNS记录,完全规避DNS传播延迟问题。如果你的EB环境都部署在私有子网,只需要确保共享ALB/Nginx集群和EB环境网络连通即可,不用把EB环境暴露到公网,安全性更高。
内容的提问来源于stack exchange,提问作者shaydawg
相关产品推荐
相关产品推荐

