尝试连接到 ec2 时,云端显示 "The request could not be satisfied 502 error"

cloudfront showing "The request could not be satisfied 502 error" when trying to connect to ec2

我正在尝试将 CloudFront 指向我的 ec2 机器。

在 origin 下,我给出了 ec2 的 public DNS 名称 :(例如 ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com)"

但是我收到这个错误:

我已经在我的 ec2 上打开了 443 端口。

如何解决这个错误?

基于聊天讨论。

实例上的应用程序通过 HTTP 和端口 80 工作。它本身不提供 HTTPS 流量服务。因此,如果您想使用 CF 的当前设置,则需要允许端口 80(不是 443),并且在 CF 中使用 HTTP 作为源协议(不是 HTTPS)。其工作方式是 HTTPS 和 SSL 仅在客户端和 CF 之间,而不是在 CF 和您的实例之间:

client----(HTTPS:443)--->CF----(HTTP:80)---->EC2 instance

正如您在上面看到的,存在安全问题。 CF 和您的实例之间的所有流量都将在互联网上 pain text 中。要纠正此问题,您需要将 HTTPS 添加到您的实例。有两种方法

  1. 在您的实例前面添加 负载均衡器,并使用来自 ACM 的 SSL 和 HTTPS 侦听器在其上部署自定义域。所以流量将是:
client----(HTTPS:443)--->CF----(HTTPS:443)---->ALB---(private HTTP:80)--->EC2 instance
  1. 直接在您的实例上设置 SSL。为此,您不能使用 ACM(除非您的实例是 enclave). Instead, you have to use third-party SSL provider. Common choice is https://letsencrypt.org/。然后您使用 SSL 证书设置 Apache 以服务 HTTPS 流量。随后,您将拥有:
client----(HTTPS:443)--->CF----(HTTPS:443)---->EC2 instance