Cloudfront 和 ALB 之间的通信导致 502 错误

DKo*_*DKo 5 amazon-web-services amazon-cloudfront aws-application-load-balancer aws-acm-certificate

我在与 ALB 源的通信中遇到 Cloudfront 502错误,这会导致:

CloudFront wasn't able to connect to the origin.
Run Code Online (Sandbox Code Playgroud)

Cloudfront 日志向我展示了OriginConnectError

我已经反复思考问题可能是什么,但我不确定如何进一步调试。

任何想法都非常感谢!

详细的

  • 我的应用程序使用通配符 A 记录来处理所有子域。它路由到 Cloudfront
  • Cloudfront 在 us-east-1 中有一个证书,域名为 *.example.com
  • Cloudfront 使用与 eu-west-1 不同的 *.example.com 证书指向 eu-west-1 中的 ALB
  • 创建直接指向 ALB 的别名记录是可行的,但我希望它指向 Cloudfront。这样应用程序就启动并运行了。

小智 5

当使用 CloudFront 并将 ALB 作为源时,非常常见的错误是我们忘记设置源请求策略以允许 Cloudfront 将 Cloudfront“主机”标头转发到 ALB。

  • 如果您使用有效的 ACM 证书为 ALB 创建了自定义域,并使用该域名作为 Cloudfront 中的源,则不会出现此问题
  • 如果您直接从 Cloudfront 控制台选择 ALB DNS 名称,则域名现在是 ALB DNS 名称,运行时会导致 TLS 失败,导致 502。要解决此问题,您需要将 Origin 请求策略设置为 ALL_VIEWER 或 ALL_VIEWER_AND_CLOUDFRONT。这将告诉 Cloudfront 将客户端在浏览器中键入的“Host”标头转发到 ALB,该标头与 ALB 规则(具有有效的 ACM 证书)匹配。

希望能帮助到你