我有一个静态托管启用S3存储桶。还有一个由该存储桶驱动的云端分发。
我已在" mywebsite.com"
的云端分发版中添加了CNAME条目当我去加载" mywebsite.com"在我的浏览器中,它会重定向到http://my-bucket.s3-us-west-2.amazonaws.com/index.html
为什么会发生这种重定向?如何阻止该主机名被重写?
修改:点击一些建议更改后的设置详细信息:
以及此设置的效果:
mysite.com
- > 301重定向到my-bucket.s3-website-us-west-2.amazonaws.com
www.mysite.com
- > 301重定向到my-bucket.s3-website-us-west-2.amazonaws.com
my-bucket.s3-website-us-west-2.amazonaws.com
- > 200成功d1h3yk3zemxpnb.cloudfront.net
- > 301重定向到my-bucket.s3-website-us-west-2.amazonaws.com
http://my-bucket.s3.amazonaws.com/
- >权限错误答案 0 :(得分:1)
这里的问题是错误配置的副作用。此特定行为可能会在数据桶创建的几分钟或几小时内消失,但潜在问题将无法解决。
在CloudFront后面配置启用静态网站托管的存储桶时,您不希望从存储桶列表中选择存储桶名称。
在“创建分发”页面的“原始设置”部分中,对于“源域名”,键入存储桶的Amazon S3静态网站托管端点。例如,
example.com.s3-website-us-east-1.amazonaws.com
。注意强>
请务必指定静态网站托管端点,而不是桶的名称。
从列表中选择example.com.s3.amazonaws.com
条目,而不是在存储桶的网站托管端点中输入,将是此行为的最可能解释。
S3更新全局REST端点层次结构*.s3.amazonaws.com
的DNS,并在创建存储桶后的短时间内向存储区的右侧区域发送请求,并且CloudFront似乎依赖于此将请求发送到正确的地点。在初始更新完成之前,S3将返回重定向,CloudFront将该重定向返回给浏览器...但所有这些都表明您没有使用静态网站托管端点作为原始域名。
答案 1 :(得分:0)
从AWS支持https://forums.aws.amazon.com/thread.jspa?threadID=216814
这是创建新存储桶时的预期行为。的 以下页面解释了该概念: http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
“ Amazon S3将所有虚拟托管样式的请求路由到美国东部(北 如果您使用美国东部地区(弗吉尼亚北部),则默认情况下为“弗吉尼亚州”区域 端点(s3.amazonaws.com),而不是区域特定的端点 (例如s3-eu-west-1.amazonaws.com)。创建存储桶时, 在任何区域,Amazon S3都会更新DNS以将请求重新路由到 正确的位置,这可能需要一些时间。同时,默认 规则适用,并且您的虚拟托管样式请求转到美国东部 (弗吉尼亚北部)区域,Amazon S3使用HTTP 307将其重定向 重定向到正确的区域。”
请花一些时间在S3上,直到域名准备就绪 (通常一个小时左右)。另外,请注意,错误被缓存在 默认情况下,CloudFront。这意味着“ 307临时重定向”已缓存 除非更改,否则将持续300秒: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html
为了再次测试您的Cloudfront,请确保缓存具有 无效: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
希望有帮助。
默认缓存策略具有
Default TTL 86400
也就是24小时,因此您可能希望使其无效而不是等待。
来自https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
如果您使用AWS命令行界面(CLI)来使文件无效 并指定包含*通配符的路径,则必须使用 路径周围的引号(“)。
例如:aws cloudfront创建无效--distribution-id distribution_ID-路径“ / *”
如果以上方法均无效,并且您正在开发中,但只想获得可访问的内容,则可以做的另一件事是更改引用或存储桶。
global — {bucket-name}.s3.amazonaws.com
到
regional — {bucket-name}.s3.{region}.amazonaws.com
如论坛上所述,这将绕过尝试使用复制的存储桶的尝试,而只进行一次操作,这不会失败,因此您将不会获得重定向。
使用curl
$ curl -I http://blah.cloudfront.net/x.svg
HTTP/1.1 307 Temporary Redirect
Content-Type: application/xml
Connection: keep-alive
x-amz-bucket-region: eu-west-1
$ curl -I http://blah.cloudfront.net/x.svg
HTTP/1.1 200 OK
Content-Type: image/svg+xml
Content-Length: 657
Connection: keep-alive