Cloudfront:将整个分发重定向到较新的分发

时间:2015-10-12 10:53:05

标签: redirect amazon-s3 amazon-cloudfront

我们在S3 Bucket上有大量文件(图像),这些文件将由用户浏览器的cloudfront发行版提供。 存储桶中的大多数图像都更改为更好的压缩算法,但文件在云端边缘位置仍然会在接下来的30天内进行缓存。

随着时间的推移,我们创建了一些更多的发行版,以便在存储桶中提供更新版本的现有文件。从现在开始,我们使用Invalidation,但仍有现有的发行版仍在搜索引擎和其他网站中引用。

现在我们想将旧版本的每个请求重定向到最新版本:

insertBefore

应该将301重定向永久发送到

- > HTTP:// -distribution.amazonaws.com/user/filename.jpg

这可能吗?如果是的话,如何实现?

2 个答案:

答案 0 :(得分:1)

是的,在S3的帮助下,这是可能的。

在Amazon S3中创建一个空桶。只要名称有效,该名称就不重要 - 仅限小写字母,数字和短划线。我们会说example-bucket

在这个新存储桶中,在存储桶属性中,在静态网站托管下,选择"将所有请求重定向到另一个域。"输入新Cloudfront分配的主机名,但不包括http://

在此之上,请注意Endpoint:,类似example-bucket.s3-website-us-east-1.amazonaws.com

保存更改,然后尝试使用浏览器访问新端点。您输入的任何路径都应重定向到新分发的相同路径。

您刚刚创建了一个原始服务器,它将生成您希望Cloudfront返回的重定向。

实现这一目标的最后步骤 - 您可能希望使用为此目的创建的不同来源进行测试 - 是:

在旧版发布中,创建一个新的自定义来源 - 来自" S3来源。"使用刚刚测试的端点主机名作为源主机名。

请确保将其配置为将所有请求作为HTTP发送到此来源,并且不要将Host标题列入白名单以转发到原点,因为这不会起作用。

创建匹配使用此来源的路径模式*的缓存行为,并删除其他行为。

您的发布会现在将所有请求发送到您的新"自定义来源,"这实际上是由S3提供的,它将使用301 Moved Permanently进行响应并将浏览器重定向到新发行版中的相同路径。

答案 1 :(得分:1)

只需通过ViewerRequest使用OriginRequestLambda@Edge事件来重定向。

OriginRequest更好,因为缓存了响应。