CloudFront 无法与 ELB 502 错误网关通信

Sha*_*zam 5 amazon-web-services amazon-cloudfront amazon-elb

我有一个带有 HTTPS 证书和一些侦听器规则的应用程序 LoadBalancer,在前面,我部署了一个 CloudFront,它将与负载均衡器通信并为 Web 中的内容提供服务,当 CF 中的源协议是 HTTP 时,源与源之间的通信CloudFront 发生了,但是当源协议在 CF 中配置为 HTTPS 时,我收到 502 bad gateway 错误。

Tri*_*top 11

要使用 HTTPS 从 CloudFront 到 ALB 的连接,同时仍使用 ALB 的 DNS 名称作为源,请在 CloudFront 的行为设置中设置自定义缓存策略。

在自定义缓存策略的设置中,指定要包含在缓存键中的主机标头。参考下图:

缓存键设置

这样,ALB 将通过引用 Host 标头中定义的主机名(而不是 ALB DNS 名称中的主机名)来知道使用正确的 SSL 证书。(假设ALB监听器中的SSL证书有效并且与用于访问CloudFront的域名匹配)

引用自: https: //docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/http-502-bad-gateway.html

证书中的域名之一必须与以下值之一或全部匹配:

  1. 您为分配中适用源的源域名指定的值。
  2. 如果您将 CloudFront 配置为将主机标头转发到源,则为主机标头的值。


Mar*_*cin 1

ALB 的 DNS 名称为:openn-dev-alb4-1497166043.us-east-1.elb.amazonaws.com

您不能将该域与 HTTPS 一起使用。您的 SSL 证书必须是为您自己的域设置的,而不是 AWS 提供的域。原因是您只能拥有您(或您的公司)完全控制的域的有效公共 SSL 证书,而不能拥有 AWS 默认 ALB 域的有效公共 SSL 证书。