我有一个带有HTTPS证书和一些侦听器规则的应用程序LoadBalancer,在前面,我部署了一个CloudFront,它将与负载均衡器通信并在web中提供内容。当CF中的原始协议是HTTP时,原始协议和CloudFront之间会进行通信,但当CF中原始协议配置为HTTPS时,我收到一个502坏网关错误。
要使用HTTPS从CloudFront连接到ALB,同时仍使用ALB的DNS名称作为源,请在CloudFront的行为设置中设置自定义缓存策略。
在自定义缓存策略的设置中,指定要包含在缓存密钥中的主机标头。参考下图:
缓存密钥设置
这样,ALB将通过参考主机头中定义的主机名而不是ALB的DNS名称中的主机名来知道使用正确的SSL证书。(假设ALB侦听器中的SSL证书是有效的,并且与用于访问CloudFront的域名匹配(
引用自:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/http-502-bad-gateway.html
证书中的一个域名必须与以下一个或两个匹配以下值:
- 您为分发中适用的来源指定的来源域名值
- 主机标头(如果已将CloudFront配置为将主机标头转发到(你的出身
ALB的DNS名称为:openn-dev-alb4-1497166043.us-east-1.elb.amazonaws.com
您不能将该域与HTTPS一起使用。您的SSL证书必须为自己的域设置,而不是为AWS提供的域设置。原因是您只能拥有您(或您的公司(完全控制的域的有效公共SSL证书,而不是AWS默认的ALB域。