Route53 的 AWS S3 重定向不适用于 HTTPS

AWS S3 Redirect for Route53 not working for HTTPS

我正在尝试使用 AWS S3 静态网站重定向来允许从 Apex 域 (example.com) 重定向到 www.example.com 域。

我使用了以下指南https://medium.com/faun/redirect-naked-domain-to-www-with-https-on-aws-route-53-e620e4ce989d

在 Route53 中,我为 apex 域创建了一条 A 记录 example.com

example.com    A    Simple   s3-website-eu-west-1.amazonaws.com.

www.example.domain 指向分发我的网站的云端分发。 云端域会将所有 HTTP 流量重定向到 HTTPS

www.example.com   A    Simple    *************.cloudfront.net.

在 S3 中,我为 example.com 创建了一个存储桶并将其设置为重定向所有请求 [ 桶是 public 并且是空的

生成的行为适用于 HTTP,但适用于 HTTPS

http://example.com -> https://www.example.com
https://example.com -> ETIMEDOUT
http://www.example.com -> https://www.example.com
https://www.example.com -> https://www.example.com

我该如何修复此设置,以便 https://example.com -> https://www.example.com

问题是 S3 静态网站托管不支持 HTTPS。 [ref]

因此您需要在 example.com s3 存储桶前面添加一个 CloudFront 并配置指向它的正确 DNS 记录

问题描述

因此,理想情况下,您希望以下所有内容都能正常工作:

1) https://example.com     → https://www.example.com   (naked to www)
2) http://www.example.com  → https://www.example.com   (http to https)
3) http://example.com      → https://www.example.com   (naked http to www https)
4) https://www.example.com →  actually show the content as the canonical URL! 

请注意,上面的要求 #3 可以分解为 两个步骤,这将是 #1 和 #2 的组合。

3B) http://example.com → http://www.example.com → https://www.example.com

所有这些 都是 HTTP 301 永久重定向。

要求

所以,这里需要 3 件:

  1. A URL 重定向 (example.com → www.example.com)
  2. [HTTPS 支持] 一个 SSL 证书 覆盖裸子域和 www(它可以二合一,免费认证经理)
  3. [HTTPS 支持] A 协议重定向 (http:// → https://)

解决方案

此解决方案需要 AWS 中的许多部分,这些部分应该都是免费的! (或无额外费用)

步骤 1) 在 S3

中创建 URL 重定向

创建 S3 静态托管网站并将其重定向到 www.example.com

备注:

  1. 确保它public可以访问。
  2. 测试 URL 是否有效,登陆它实际上会进行重定向。 (或通过 curl -v 在终端中测试)
  3. 始终测试 包含区域 的完整 URL(即 .s3-website-us-west-2.amazonaws.com

步骤 2) 在证书管理器中为裸域创建 SSL 证书

转到 https://us-west-2.console.aws.amazon.com/acm/home?region=us-west-2#/(将您的区域更改为您喜欢的区域)并申请 public 证书。确保将 example.comwww.example.com 都放在那里。在 Route 53 中验证。

步骤 3) 在 CloudFront 中创建协议重定向

转到 CloudFront 并使用“Http => HTTPS 重定向”的查看器协议策略 创建一个分配,并且其来源是 S3 存储桶的完整 URL以上。

备注:

  1. 不要直接指向 S3。让我们指向 S3 存储桶静态网站的完整 URL。
  2. 缓存策略可以是无缓存。
  3. 备用域名应该是您的 example.com 并且应该将第 2 步的 SSL 证书输入其中。
  4. 在“来源”选项卡中验证您指向的是 S3 完整 URL 路径。

步骤 4) 在 Route53 中有一个 DNS 记录

最后,转到您的 route53 DNS 记录并将裸域作为 A 记录指向第 3 步的 CloudFront 分配,应该类似于 d21k2s1234123.cloudfront.net!

多田!