【发布时间】:2016-06-07 11:39:11
【问题描述】:
我有一个域名formulagrid.com。
我正在使用 AWS S3 将其托管为静态网站。我的问题是我想将 www 子域重定向到裸域,如下所示:
https://www.formulagrid.com -> https://formulagrid.comhttp://www.formulagrid.com -> https://formulagrid.com
如果两者都设置为静态网站托管,亚马逊会提供从 S3 存储桶到 S3 存储桶的 URL 重定向。
所以我要做的就是设置两个桶:
-
formulagrid.com- 实际网站 -
www.formulagrid.com- 仅用于重定向到实际网站
如果您仅通过 HTTP 进行操作,这非常有效,但 S3 绝对不支持 HTTPS。
使用 HTTPS 连接到 S3 静态网站的方法是在 S3 存储桶前设置 CloudFront 分配。然而,CloudFront 虽然提供 HTTPS,但主要是作为 CDN 存在的。
最初,我在包含实际站点的 S3 存储桶前面设置了一个 CloudFront 分配设置。一切似乎都可以运行:该站点通过 CDN 分发,它具有 HTTPS,并且 HTTP 重定向到 HTTPS。
有一个例外。
-
https://www.formulagrid.com是一个完全损坏的页面
找了一阵子错误的源头,才发现是因为没有经过CDN,尝试通过HTTPS访问S3不起作用。
最后,我最终不得不做的是在www S3 存储桶前面配置另一个发行版,以便可以通过 HTTPS 访问它。这就是我担心的地方,因为正如我之前提到的,CloudFront 的主要目的是成为 CDN。
将 CDN 放在只是重定向到另一个 URL 的 URL 前面对我来说没有任何意义。它还提出了一个问题,即我是否会为每个到达 www 子域的请求支付双倍费用,因为它会在重定向后到达其他 CloudFront 分配。
这令人沮丧,因为我正在尝试使用 Lambda 构建“无服务器”架构,并且必须配置 EC2 实例来进行 url 重写不是我想做的事情,除非这是我最后的手段。
如果 Amazon 提供任何形式的 URL 重写或 CloudFront 本身进行重定向,那么解决方案将是微不足道的,但据我所知,这些都不存在(如果有,请告诉我)。
我是 AWS 新手,所以我希望有更多经验的人可以为我指明正确的方向。
【问题讨论】:
标签: amazon-web-services networking amazon-s3 cdn amazon-cloudfront