当您的用户向您的对象存储OSS请求的数据不存在时,本应返回404错误。若您设置了回源规则,填写了数据的正确地址,用户可以通过回源规则从OSS获取到正确的数据。
回源类型分为镜像和重定向两种方式,可以满足您对于数据热迁移、特定请求的重定向等需求。配置回源规则的API接口详细信息,请参见PutBucketWebsite。
使用限制
- 回源规则最多配置20条,按RuleNumber的先后顺序依次匹配。如果命中当前规则,则后续规则不再匹配。规则未命中表示没有匹配回源条件,与回源后是否成功获取目标文件无关。
- 回源地址不能设置为内网地址。
- 回源规则和版本控制功能无法同时配置,若存储空间已开启版本控制,则无法配置回源规则。
- 对于镜像回源,中国各地域默认QPS为2000、流量为2 Gbit/s;海外各地域默认QPS为1000、流量为1 Gbit/s。
- 对于镜像回源,回源地址中支持增加图片处理参数,但不支持增加视频截帧参数。
- 镜像回源默认超时时间为10秒。
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具ossutil | 命令行工具,性能好 |
镜像方式
当客户端通过GetObject请求Bucket中的某个文件不存在时,OSS会向回源地址请求这个文件。获取到该文件后,OSS会将文件存入目标Bucket,并返回给用户。具体流程如下图所示。
- 使用场景
镜像回源主要用于数据无缝迁移到OSS的场景。例如某服务已经在自己建立的源站或者在其他云产品上运行。现因业务发展,需要将数据迁移到OSS上,但是又不能停止服务,此时可以在迁移数据的同时,使用镜像回源功能保证业务的正常进行。详细案例请参见互联网公司业务无缝迁移至阿里云OSS。
- 细节分析
- 回源规则触发条件
只有当GetObject本应该返回404的情况下,OSS才会执行镜像回源,向源站请求文件。
- 回源文件命名规则
OSS向源站请求的URL为
http(s)://MirrorURL+ObjectName
,回源到OSS的文件名为ObjectName。例如某Bucket设置的回源地址为https://aliyun.com
,某用户请求的文件example.jpg不在该Bucket中。则OSS会通过https://aliyun.com/example.jpg
获取文件,存储到OSS的文件名为example.jpg。 - 回源请求失败返回规则
如果镜像源也不存在此文件,即镜像源返回给OSS的HTTP状态码为404,那么OSS也会返回404给用户。如果是其他非200的状态码(包括因为网络原因等获取不到文件的错误情况),OSS将返回
424 MirrorFailed
给用户。 - x-oss-tag响应头
通过镜像回源的文件会添加一个
x-oss-tag
响应头,值为MIRROR
。格式为x-oss-tag:MIRROR
。文件回源到OSS后,只要文件不被覆盖,每次下载这个文件都会添加这个头部,用于表示这个文件来源于镜像回源。
- 回源文件更新规则
若某个文件已经通过镜像回源到OSS,源站的源文件发生了变化,OSS不会更新该文件。
- 回源文件元信息
OSS会将源站返回的以下HTTP头存为OSS文件的元信息:
Content-Type Content-Encoding Content-Disposition Cache-Control Expires Content-Language Access-Control-Allow-Origin
- HTTP请求规则
- 传给OSS的Header信息不会传递给源站,QueryString信息是否会传递给源站取决于控制台回源规则中的配置。
- 如果源站是chunked编码返回,那么OSS返回给用户的也是chunked编码。
- 回源规则触发条件
重定向
重定向功能的作用是根据设置的回源条件,以及相应的跳转的配置,向用户返回一个3xx跳转。具体流程如下图所示。
- 其他数据源向OSS的无缝迁移
用户异步的从自己的数据源向OSS迁移数据,在此过程中未迁移到OSS的数据通过URL rewrite的方式返回给用户一个302重定向请求,用户的客户端根据302中的Location从自己的数据源读回数据。
- 配置页面跳转功能
例如用户希望隐藏自己的某些前缀开头的Object,给访问者返回一个特殊的页面。
- 配置发生404或500错误时的跳转页面
发生以上错误的时候用户可以看到一个预先设定的页面,不至于系统发生错误的时候向用户完全暴露OSS的错误。