通过格鲁吉亚诺拉
# 使用 Amazon S3 和 HTTPS 的简单站点托管
嗨伙计们!
在本教程中,我将向您展示如何使用自定义域在 AWS 上使用 HTTPS 托管静态网站。所有这一切都可以使用 AWS 免费套餐
但是,我们将要使用的服务确实会产生一些小额费用。一般来说,这些不应该超过 1 美元/月
我们将结合使用以下 AWS 服务:
Ø Ø Ø Ø S3
Ø Ø Ø Ø 53 号公路
Ø 证书管理器
CloudFront
*让我们开始吧!*
设置您的 S3 存储桶
首先,你需要
**两个 S3 存储桶都应将您的自定义域名与第二个匹配,包括 www 子域
桶 1:
桶 2:
第一个存储桶 (mywebsite.com) 是您网站的主要存储桶。这包含您静态网站的所有文件和资产
接下来我们为静态网站托管设置这个桶。您可以在存储桶的属性选项卡下找到它,我们将保留此处提供的默认值,并将站点索引设置为 index.html
我们还需要使此存储桶可访问,因为用户的浏览器需要访问存储桶的文件才能呈现网站。我们可以通过在 Permissions 选项卡下设置 Bucket Policy 来做到这一点
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "Action": "s3:GetObject", "资源”:“MY_BUCKET_ARN”}]}
这是一个简单的策略,只允许对存储桶中的对象进行公共读取访问。现在,如果您前往存储桶的静态托管配置中定义的端点,您应该会看到您的网站
进步!但我们可以做得更好
第二个存储桶 (www.mywebsite.com) 我们将保留为空,但配置为使用 HTTP 作为协议重定向到我们的第一个存储桶(稍后我们将使其成为 HTTPS)
您的水桶现在可以使用了!
使用 Route53 配置域
因此,您的网站已启动并正在运行,但只能通过存储桶端点访问,而不能通过您的自定义域访问。让我们改变它
前往
**Route53 如果您已经在 Amazon Registrar 注册了您的域,您应该会看到已经为您设置了一个托管区域,其中包含两个记录集。一个用于名称服务器 (NS),一个用于 SOA
我们需要做的就是再创建两个记录集以指向 S3 存储桶端点
对于每个记录集:
√ 类型:A √ IPv4 地址
Ø 别名:是
√ 别名目标:与您为名称设置的内容相匹配的 S3 网站端点
现在我们可以前往自定义 url 和 voil !
我们快到那里了,但还有最后一件事我们丢失了啊啊啊
**注意如果您的域是在另一个域注册商(不是亚马逊)注册的,您将需要按照一些不同的步骤进行设置。通常,您需要添加一条 CNAME 记录,其中包含主要 S3 存储桶端点的值。 **故障排除
如果您删除了亚马逊在您首次注册域时创建的托管区域(我这样做是因为托管区域确实会产生一些费用),您需要从头开始创建一个新的托管区域
- 选择“创建托管区域”并设置域名,例如“我的网站”。 COMÉ
- 这将为 NS 和 SOA 类型生成一些新的记录集
- 进入您的注册域并将名称服务器值更新为在新 NS 记录集中生成的值
申请证书
太棒了,该网站现在使用自定义 url 托管!但是我们只能通过HTTP协议访问它
我们应该始终确保我们的网站使用 HTTPS 协议进行保护。这可以保护我们的网站和用户免受恶意注入攻击并保证真实性
前往
AWS 控制台中的**证书管理器**并请求新的公共证书(这是免费的)。系统会提示您输入要保护的域名
在颁发证书之前,Amazon 需要能够验证您是否拥有指定的域
您可以从两种验证方法中进行选择:电子邮件或 DNS
电子邮件通常更简单,但您需要确保您可以访问用于注册域的电子邮件。或者,如果您使用 Amazon Registrar 和 Route53,则可以选择 DNS 方法。这需要您将一些特定的记录集添加到托管区域,但这对您来说大部分是自动的,所以它非常简单
验证后可能需要几分钟才能颁发证书
当一切都完成后,我们可以继续最后一步!
配置 CloudFront
对于最后一步,我们将使用
**CloudFront ** 允许我们使用新的 SSL 证书通过 HTTPS 为网站提供服务。 CloudFront 还通过将 Web 内容存储在多个边缘位置并从最近的边缘位置交付给用户来加快 Web 内容的分发
我们需要
**两个新的 Web 分布,每个 S3 存储桶一个。前往 AWS 控制台中的 CloudFront 并创建第一个 Web 分发
有很多设置可用于创建 Web 分发,但对于基础知识,我们只需要更改五个:
源域名:将此设置为其中一个存储桶的 S3 网站端点。重要提示:此字段将为您提供一些带有 S3 存储桶名称的自动完成选项。但是,使用这些可能会导致重定向到存储桶端点的问题。因此,而是直接使用存储桶端点。 Origin Id:当您输入 Origin Domain Name 时,它会为您填充。查看器协议策略:设置为“将 HTTP 重定向到 HTTPS”。备用域名:这应该与您指向的 S3 存储桶的名称相匹配。例如 âÃÂÃÂmywebsite.comâÃÂÃÂ。 SSL 证书:选择“自定义 SSL 证书”并从下拉列表中选择您的新证书
对第二个 S3 存储桶再次执行此操作
分发可能需要一段时间才能启动,所以在我们等待的同时,让我们完成最后的步骤
早在
**S3 转到您的辅助存储桶 (www.mywebsite.com),在“属性”选项卡和“静态网站托管”下将重定向协议设置为 HTTPS
最后,回到
**Route53 我们需要更新我们创建的自定义 A 记录,以现在针对 CloudFront 分配而不是 S3 存储桶。对于每条记录,更改别名目标并在下拉列表中选择可用的 CloudFront 分配
注意:同样,如果您使用的是其他 DNS 服务,您将需要从那里更新 CNAME 记录以指向 CloudFront 域名
你有它!您漂亮的网站现在可以在自定义域中访问并使用 HTTPS 服务!
谢谢阅读!我希望本指南有用且令人愉快,我很想知道您是否觉得它有帮助。