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。
所以我在 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。