如何使用 EC2 网站设置 Cloudfront

Posted

技术标签:

【中文标题】如何使用 EC2 网站设置 Cloudfront【英文标题】:How to set up Cloudfront with EC2 website 【发布时间】:2021-02-22 01:51:26 【问题描述】:

我是 AWS 新手,希望有人可以在这里回答我的问题。我在 EC2 实例上创建了一个 Web 服务器并在其上安装了 Craft CMS。我已从证书管理器请求公共证书,并将 CNAME 放在域名的 route53 托管区域中。该证书附加到我附加到我的 EC2 实例的负载均衡器。如果我用所有这些设置云端,我的网站仍然显示为不安全(这意味着我没有做正确的事情)。我应该如何将云端连接到我的 EC2 实例?有或没有负载均衡器。我只有一个实例在运行,所以我也不需要负载均衡器。谢谢!

【问题讨论】:

您的 CloudFront Distribution 是否使用基于 EC2 的 Web 服务器作为其来源?您的 Route53 CNAME 入口是否指向云端主机名? CloudFront 只允许我从 S3 存储桶或 ELB 中进行选择(这就是我首先制作 ELB 的原因)。所以我将它附加到附加到 EC2 实例的 ELB 上。 CNAME 也指向 ELB。 CNAME 来自 AWS Certificate Manager,这也表明 ELB 作为资源附加到它。 【参考方案1】:

只是为了澄清您要完成的工作:1)您有一个或多个 EC2 实例,大概在一个自动扩展组中; 2) 这些 EC2 实例被设置为您的 ELB 的目标; 3) 你有一个对你的 ELB 主机名有效的证书,我们称之为 elb.mydomain.com。

现在您正尝试以 ELB 作为源来设置 CloudFront?

从 CloudFront 证书开始:证书是否也适用于您的 CloudFront 主机名(我们称之为 www.mydomain.com)?如果没有,您将需要为 www.mydomain.com 创建和验证另一个证书。

其次,必须将 CloudFront 分配配置为使用对您要使用的主机名有效的证书。您还必须在 CloudFront 分配中包含主机名作为备用域名。然后确保从所需主机名到 CloudFront 分配的 route53 CNAME 入口点,类似于 d18sdfijsilj.cloudfront.net。

【讨论】:

我刚刚从 Certificate Manager 中删除了 ELB、目标组、CloudFront 分配和证书。我现在将根据我对您的回答的理解执行这些步骤(感谢您在这里提供帮助!)。现在我已经创建了一个弹性 IP 并将其附加到我的 EC2 实例并从 Route53 将其路由到我的域名 1)从 AWS Certificate Manager 为域名 mydomain.net 创建证书 2)输入证书的 CNAME 记录证明 DNS 所有权 3) 创建一个 ELB(CloudFront 只允许我从 S3 或 ELB 中选择,而不是 EC2,否则我会跳过这个)并将它与我的 EC2 实例相关联 4)使用 ELB 创建一个 CloudFront 分配源,并在备用域名部分添加 mydomain.net (有时由于某种原因不允许输入) 5)删除 route53 通过弹性 IP 路由到 EC2 实例的记录并创建一个 CNAME 到朝着云端分发这样做听起来对吗? 是的,听起来不错,但是,如果您只使用 ELB,因为您只能将 CloudFront 连接到 S3 或 ELB,我认为这是不正确的。通常我使用 CloudFormation 而不是 Web 控制台进行设置,但此处的 CloudFormation 文档说您可以使用 CustomOriginConfig 设置“在 Amazon EC2 实例或任何其他类型的主机上运行的任何其他 HTTP 服务器”。有时在 web 控制台中很难找到东西,但这可能会简化事情。 docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…

以上是关于如何使用 EC2 网站设置 Cloudfront的主要内容,如果未能解决你的问题,请参考以下文章

使用Cloudfront而不是单个EC2实例的AWS ELB设置有什么意义?

$_GET 变量在我的 ec2 实例中使用 cloudfront aws 不起作用

我需要亚马逊的 EC2、Cloudfront、RDS 吗?

Cloudfront 和 EC2

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

AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动静分离站点