Cloudfront:将整个发行版重定向到更新的发行版

iti*_*nce 0 redirect amazon-s3 amazon-cloudfront

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

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

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

GET http://old-distribution.amazonaws.com/user/filename.jpg
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mic*_*bot 5

是的,在 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浏览器并将浏览器重定向到新发行版中的相同路径。