Cloudfront 使用 ssl 将 www 重定向到裸域

如果以前有人问过这个问题,请原谅我,有很多资源都涉及到这个问题,但似乎没有什么适合我的特定(https)用例。

我正在尝试将 https://www.example.com重定向到 https://example.com。同样,这应该适用于 http://www.example.comhttps://example.com

我已经建立了一个源自 s3 bucket 的 Cloudfront 发行版,将 http 重定向到 https,添加了 cname example.com,并添加了我的域名证书(该证书既适用于 www 子域名,也适用于裸域名)。

我还建立了一个单独的发行版,使用了 www.example.com 的 cname,添加了证书,并将原点设置为一个单独的 s3 bucket,该 bucket 在(静态网站托管)中将所有请求重定向到 https://example.com

对于 http://example.comhttps://example.com,重定向可以正常工作,但是 http://www.example.com 到 https://example.com则不能。

在路线53中,我把根域别名为第一个云锋分布,把 www 别名为第二个。

47292 次浏览

多亏了这个答案,我找到了解决方案: Amazon S3重定向和 Cloudfront

简而言之:

如果原点只是 bucket ID,Cloudfront 不遵守 S3中设置的重定向规则。相反,我必须设置原点提供的 s3静态网站主机名称。

在 AWS 上建立网站,以便:

Https://www.example.com、 http://www.example.com 和 http://example.com https://example.com

你需要:

  1. 创建两个名为: Example.comWww.example.com的 S3存储桶。

  2. 打开这两个桶上的 静态网站托管

  3. 将 bucket Www.example.com中的重定向配置为: Https://example.com。 在 bucket 属性中选择 静态网站托管 = > 将所有请求重定向到另一个主机名。在 目标桶或域字段中输入 Example.com,在 规定字段中输入 Https

  4. 为这些 bucket 创建 CloudFront 发行版,每个发行版都指向相应的 bucket:

  5. 对于 原产地域名,提供在 静态网站托管章节中提供的桶形网址。网址应该有形式(或类似) : < 强 example.com.s3-website-us-west-1.amazonaws.com

    • 对两个分布集 HTTP 到 HTTPS重定向。

    • 不要使用亚马逊自动完成建议的 URL!

    • 不要设置 默认根对象属性!

  6. 通过为 www.example.com 和 example.com 设置 A 记录来配置 DNS,以指向相应的 CloudFront 发行版。

为什么会有用?CloudFront 在这两种情况下都提供了从 HTTP 到 HTTPS 的重定向(有或没有 www)。Bucket for www.example.com 提供了对 example.com 的重定向。如果没有这个发布,bucket 将无法重定向对 https://www.example.com 的请求。S3本身不支持静态网站托管的 HTTPS。