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

时间:2015-02-23 14:07:34

标签: redirect ssl amazon-s3 amazon-cloudfront amazon-route53

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

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

我已经设置了一个带有s3存储桶源的云端分发,将http重定向到https,添加了cname example.com并添加了我的域证书(适用于www子域以及裸域)。 / p>

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

重定向按照http://example.comhttps://example.com的预期方式工作,但http(s)//www.example.com到https://example.com则没有。

在路由53中,我将根域别名化为第一个云端分布,将www别名为第二个。

2 个答案:

答案 0 :(得分:70)

在AWS上托管网站,以便:

https://www.example.com,http://www.xexample.com和http://example.com 全部重定向到 https://example.com

你需要:

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

  2. 在这两个存储桶上启用静态网站托管

  3. 将存储桶 www.example.com 中的重定向配置为: https://example.com 。 在存储桶属性中选择静态网站托管 => 将所有请求重定向到其他主机名。在目标存储桶或域字段中,输入 example.com ,在协议字段中输入 https

  4. 对于这些存储桶,请创建两个 CloudFront分配。每个发行版都指向相应的存储桶:

  5. 对于 Origin Domain Name ,提供静态网站托管部分中提供的存储桶网址。网址应具有(或类似)形式: example.com.s3-website-us-west-1.amazonaws.com

    • 在两个分发集 HTTP到HTTPS 重定向上。

    • 请勿使用由AMAZON AUTOCOMPLETE推荐的网址!

    • 请勿设置默认根对象属性!

  6. 通过将www.example.com和example.com的A记录设置为指向相应的CloudFront分配来配置DNS。

  7. 为什么会这样?在两种情况下(使用和不使用www),CloudFront都提供从HTTP到HTTPS的重定向。 www.example.com的存储桶提供重定向到example.com。如果您没有此分发,则存储桶将无法重定向https://www.example.com的请求。 S3本身不支持静态网站托管的HTTPS。

答案 1 :(得分:47)

由于这个答案,我找到了解决方案:Amazon S3 Redirect and Cloudfront

简而言之:

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