CloudFront 到 EC2 源返回 502 错误。我该如何调查?

Posted

技术标签:

【中文标题】CloudFront 到 EC2 源返回 502 错误。我该如何调查?【英文标题】:CloudFront to EC2 origin returns a 502 error. How can I investigate? 【发布时间】:2020-10-13 03:42:13 【问题描述】:

当我尝试将云前端连接到 EC2 时,我可以看到以下错误。 我在云端将 ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com 设置为“源域名和路径”。怎么了?

502 错误 无法满足请求。 CloudFront 尝试与源建立连接,但尝试失败或源关闭了连接。我们目前无法连接到此应用或网站的服务器。

可能是流量过多或配置错误。请稍后再试,或联系应用或网站所有者。

如果您通过 CloudFront 向客户提供内容,您可以通过查看 CloudFront 文档找到解决问题并帮助防止此错误的步骤。

期待您的回复。 :)

【问题讨论】:

如果您将ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com 放入您的网络浏览器,它会起作用吗?与实例关联的入站安全组的配置是什么?顺便说一句,您应该将弹性 IP 地址与实例相关联,给它一个将来不会更改的静态 IP,然后在 CloudFront 配置中使用该 IP 地址。 没有 CF 也能用吗? 它不起作用..我尝试通过域名和EIP地址直接访问EC2。但是它拒绝了访问。对于安全组,它向公众开放。 【参考方案1】:

CloudFront 的 502 错误归结为多个问题:

如果 CloudFront 尝试通过 HTTPS 连接到源,请验证您的 SSL,它是否对源域有效。如果您想验证,请使用 SSL Labs。 这些端口是否对 CloudFront 开放?您需要确保 CloudFront 可以公开连接到您的实例。如果它通过私有 IP 地址连接,它将无法工作,如果您将端口限制为特定 IP 地址,它也将无法工作。

您可以从 AWS 文档 here 中了解更多关于 CloudFront 502 背后的原因。

还有什么问题可以告诉我。

【讨论】:

在云前端和 EC2 之间,我使用的是 HTTP。现在我想在这里使用 HTTP。对于安全组,EC2 向公众开放。我尝试通过域名和 EIP 地址访问 EC2。但是该页面拒绝了我的访问。发生了什么? 您的实例是否在公有子网中?为此,它的路由表必须有一个互联网网关。同一子网中是否还有其他公共实例? 我在同一个子网中有两个实例。子网的acl是这样公开的。 #100 所有流量 ALL ALL 0.0.0.0/0 ALLOW * ALL 流量 ALL ALL 0.0.0.0/0 DENY 公共子网表示是否有一个 Internet 网关连接到连接到子网的路由表 您可以专门为您的实例的 ENI 启用流日志吗?可能能够查看是否有任何流量被拒绝? :)

以上是关于CloudFront 到 EC2 源返回 502 错误。我该如何调查?的主要内容,如果未能解决你的问题,请参考以下文章

将 AWS cloudfront 放在 ec2 前面会引发 502 错误

具有私有 EC2 源的 Cloudfront

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

CLOUDFRONT EC2 源错误 CloudFront 试图建立与源的连接 [重复]

不可预测的 Cloudfront 502 错误

Cloudfront 为备用域名返回 502