【发布时间】:2020-12-21 03:42:33
【问题描述】:
我在 S3 上设置了我的网站,并以 CloudFront 为前端。就托管等而言,一切正常,但在将https://www.example.com 重定向到https://example.com 时,我遇到了一些奇怪的问题。
我已将站点设置为植根于example.com。我有两个 S3 存储桶,一个用于根域(即example.com),一个用于www.example.com。主要内容托管在example.com 存储桶中,而www 存储桶为空。
www S3 存储桶设置为将所有请求重定向到example.com 域。我已清除协议字段,以便它与原始请求匹配。重定向域只是说example.com。
www 存储桶的政策非常基本,但为了完整起见,我将其包含在此处:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/..."
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.example.com/*"
}
]
}
最终发生的事情是我可以成功地将http://www.example.com 重定向到https://example.com,但https://www.example.com/ 只是挂起。在curl 中检查此内容只会导致超时。
在 CloudFront 方面,我的 CF 分发设置使用 example.com 作为备用域,而我的 Origin 仅指向我的 example.com 存储桶。
我将 Route53 用于 DNS,www.example.com A 记录指向 www S3 存储桶,而 example.com 的 A 记录指向 CloudFront 分配。
我在这里完全不知所措,我们将不胜感激。
【问题讨论】:
-
为什么R53中的
www.example.com直接指向bucket?您的存储桶策略仅允许来自 CF 的 OAI 用户访问它。因此,直接访问(即,没有 CF)应该是不可能的。 -
是的,鉴于没有可下拉的内容,这是一个虚假的策略,但重定向应该首先命中。请记住,该策略适用于
GetItem,但由于没有任何项目,它不应该启动。尽管如此,我仍然需要www站点的 DNS 条目,所以这仍然是必要的。 -
S3 网站端点不支持 HTTPS。所以如果你只是直接去bucket s3网站端点,就不会有HTTPS,这可以解释为什么你的
https://www.example.com不起作用。 -
为了提供网络内容,当然可以,但是如果它们只支持
http,为什么还要提供匹配重定向设置协议的选项呢?有些东西没有加起来。 -
"Amazon S3 不支持 HTTPS 访问网站。如果您想使用 HTTPS,可以使用 Amazon CloudFront 服务托管在 Amazon S3 上的静态网站。"来自here。但是您写道“example.com/simply 挂起”。您不能按照文档中的说明使用 HTTPS。为此,您必须使用 CF。因此,我不明白为什么您的“www.example.com A 记录指向 www S3 存储桶”。它应该指向 CF,而不是 s3 存储桶。
标签: amazon-web-services amazon-s3 amazon-cloudfront