Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS

Posted

技术标签:

【中文标题】Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS【英文标题】:Cloudfront domain name not working to redirect HTTP to HTTPS using S3, Cloudfront, and Route 53 【发布时间】:2020-02-01 19:30:24 【问题描述】:

这里的第一篇文章 - 你好 ***ers :) 网站问题。 在 Google 上购买了域名,托管在 S3 上。使用路由 53 重定向请求。 在 S3 中创建了 2 个公共存储桶,example.com 和 www.example.com(example.com 重定向到 www)网站工作 - 是的!现在让我们获取它 https 通过路由 53 DNS 确认获得 *.example.com 的 SSL 亚马逊证书。 将其上传到我的云端发行版(并在确保 http 重定向到 https 的参数中)。 在这篇文章 (How to redirect HTTP to HTTPS using S3, Cloudfront, and Route 53 using naked domains? ) 之后,我现在需要将请求从路由 53 重定向到 Cloudfront 域名。

但是Cloudfront domain name 给出了错误消息(见下文)。它可能来自哪里? (我知道这应该是https网站链接吗?) error message

仅供参考,不要使用 EC2 实例。我知道还有另一种通过像 Namecheap 这样的提供商获取 SSL 的方法——但它似乎要复杂得多(与亚马逊免费提供的相比)。

【问题讨论】:

您为 CloudFront 分配配置了什么来源 您好,感谢您的帮助!来源是:www.example.com.s3.amazonaws.com 【参考方案1】:

您的 CloudFront 源可能指向错误的端点。不要从源列表中选择自动建议的存储桶,而是明确复制 S3 存储桶中“静态网站托管”下显示的端点,该端点应类似于 example.com.s3-website-us-east-1.amazonaws.com。否则,您指向的是 S3 存储桶 HTTP 接口,而不是网站主机。

只是为了确定,整个过程基本上是:

    首先在 Route 53 中设置域区域,以便下一步存在。 在区域 US-East-1(弗吉尼亚北部,重要!)中,在证书管理器中为域创建证书请求。使用 DNS 验证,让 AWS 将所需记录自动插入到您在 1 中创建的 Route 53 配置中。 创建 S3 存储桶。 显式设置custom bucket policy to allow anonymous access。 为存储桶启用“静态网站托管”。注意显示的端点。 创建 CloudFront 分配,将您的域名添加为备用域名,从列表中选择 2. 中创建的证书,将 5. 中记下的端点添加为来源。 更新 Route 53 配置以添加 A(和 AAAA)alias 记录,指向 CloudFront 分配,您可以从自动建议的列表中进行选择。 等待一切部署完毕。

尤其是您想要按照描述创建的证书,因为这允许它自动更新,您不必担心它。 CloudFront 只能自动使用在 US-East-1 区域创建的证书,在其他地方创建您的证书意味着您需要手动下载/上传它们,并且每次它们到期时都这样做。

【讨论】:

好!谢谢我意识到我的错误,我没有在我的云端分发中添加 index.html 根目录 只有一个 CloudFront 分配,对 example.com 的请求不会被重定向到 www.example.com,反之亦然,对吧? @abalone CloudFront 不会进行任何类型的重定向。如果有的话,将是 S3 后端进行重定向。如果您创建一个包含两个名称的证书和一个包含两个 CNAME 的分配,并将两个名称都指向 Route 53 中的此分配,则可以让一个 CloudFront 为这两个域提供服务。 @deceze 在那种情况下 www.example.com 和 example.com 会提供重复的内容,我想这是不应该的。这将需要两个云端分发才能进行重定向。 @abalone 重复内容是一个单独的问题。根据您的说法,为什么它需要两个发行版?

以上是关于Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3+Cloudfront 访问被拒绝初学者问题

Amazon Cloudfront 允许所有备用域名 (CNAMES)

Amazon S3 无法通过 Cloudfront 上传文件

Cloudfront 为备用域名返回 502

Terraform无法使用静态S3网站端点创建CloudFront的原点

将子域指向 Cloudfront 时连接不安全