Cloudfront 在连接到 ELB/Elastic Beanstalk 时抛出 504

Cloudfront throws 504 while connecting to ELB/Elastic Beanstalk

所以我在 Elastic Beanstalk 上托管了一个 NextJS 应用程序(它暴露在 docker 文件中的端口 3000 上)。现在,我已经在 Godaddy 注册了我的域名。我最初在 Godaddy 中设置了 DNS 以指向 Elastic Beanstalk。但后来我想为 CDN/Caching.

使用 cloudfront

所以,我开始配置 Cloudfront(使用 this article)。我创建了自定义 SSL 证书并通过 DNS 对其进行了验证。我将 cloudfront 中的原点设置为指向 ELB。

现在,部署云端分发后,我尝试使用云端 URL xxxxx.cloudfront.net,但出现 "504 ERROR - The request could not be satisfied" 错误。

如果我去 ELB URL 我可以访问我的应用程序。所以,我不确定这里有什么问题。如果 cloudfront 指向 ELB 并且 ELB 工作那么为什么 cloudfront URL 将无法工作。

任何advice/recommendations?

如果您收到 504 错误,则表示连接到源时超时。

您应该检查以下内容:

  • ELB 的安全组是否允许来自任何人的入站流量(在端口 80/443 上)?如果没有,CloudFront 将被阻止。
  • 您是否错误配置了“源协议策略”,通过选择“匹配查看器”,它会期望命中 CloudFront 的 HTTPS 请求尝试通过 HTTPS 连接到源。
  • 您的应用程序的开始时间是否超过 Origin Response Timeout 的值?默认情况下,这是 30 秒。
  • 确保来源是正确的域名。

在 AWS 的 HTTP 504 Status Code (Gateway Timeout) 页面中,还有一些额外的步骤可以在 CloudFront 中调试 504。