Cloudfront路由S3与ELB时ELB证书不匹配引发502错误如何解决
问题根因
Cloudfront回源到ELB时使用的请求域名是elasticbeanstalk.com后缀的地址,而ELB上绑定的证书仅覆盖*.mydomain.com,两者不匹配导致SSL握手失败,触发502错误。
解决方案(官方推荐方案,无需持有elasticbeanstalk.com域名)
- 步骤1:为ELB配置自定义子域名
在Route 53中为你的域名新增一条别名记录,例如api-dev.mydomain.com,指向当前使用的ELB/弹性Beanstalk环境地址。你现有的*.mydomain.com证书天然覆盖该自定义子域名,无需额外申请证书。 - 步骤2:更新ELB的证书绑定
确认你使用的*.mydomain.com证书已经绑定到对应的ELB监听器上(HTTPS 443端口监听器)。 - 步骤3:修改Cloudfront ELB源站配置
进入Cloudfront控制台,找到对应ELB的源站配置:- 将源站域名替换为你刚配置的自定义域名
api-dev.mydomain.com - 回源协议选择HTTPS时,确认源站SSL设置中的SNI配置匹配证书要求,回源Host头可设置为
api-dev.mydomain.com,避免后端服务Host校验失败
- 将源站域名替换为你刚配置的自定义域名
- 步骤4:验证生效
等待Cloudfront配置部署完成(通常需要5-10分钟),再次访问dev.mydomain.com/api/*路径即可正常返回结果。
不推荐的备选方案
你也可以在Cloudfront源站配置中关闭SSL证书校验,该方案会带来数据传输被窃听/篡改的风险,仅可用于临时测试,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者pantaphobic
相关产品推荐
相关产品推荐

