对象存储OSS提供回源功能,配置回源规则后,当您向OSS请求的数据不存在时,可以通过回源规则从设定的源地址获取到正确的数据,满足您对于数据热迁移、特定请求重定向等需求。回源方式分为镜像和重定向。

说明
  • 回源规则最多配置5条,按顺序匹配生效。
  • 配置回源规则的API接口详细信息请参见GetBucketWebsite

操作方式

操作方式 说明
控制台 Web应用程序,直观易用
命令行工具ossutil 命令行工具,性能好

镜像方式

如果配置了镜像回源,当用户对该存储空间内一个不存在的文件进行GET操作时,OSS会向回源地址请求这个文件,返回给用户,同时会将该文件存入OSS。具体流程如下图所示。

管理回源设置_管理文件_对象/文件(Object)_开发指南_对象存储 OSS 阿里云技术文档 第1张
  • 使用场景

    镜像回源主要用于数据无缝迁移到OSS的场景。例如某服务已经在自己建立的源站或者在其他云产品上运行。现因业务发展,需要将数据迁移到OSS上,但是又不能停止服务,此时可以在迁移数据的同时,使用镜像回源功能保证业务的正常进行。详细案例请参见互联网公司业务无缝迁移至阿里云OSS

  • 细节分析
    • 只有当GetObject本应该返回404的情况下,OSS才会执行镜像回源,向源站请求文件。
    • OSS向源站请求的URL为MirrorURL+object,回写到OSS的文件名为object。例如某Bucket设置的回源地址为http://aliyun.com,某用户请求的文件abc/123.jpg不在该Bucket中。则OSS会通过http://aliyun.com/abc/123.jpg获取文件,存储到OSS的文件名为abc/123.jpg
    • 传给OSS的header信息不会传递给源站,querystring信息是否会传递给源站取决于控制台回源规则中的配置。
    • 如果源站是chunked编码返回,那么OSS返回给用户的也是chunked编码。
    • OSS会将源站的以下头信息返回并存为OSS的头信息:
      Content-Type
      Content-Encoding
      Content-Disposition
      Cache-Control
      Expires
      Content-Language
      Access-Control-Allow-Origin
    • 通过镜像回源的文件会添加一个x-oss-tag响应头,值为MIRROR + 空格 + url_decode(回源URL)。例如:
      x-oss-tag:MIRROR http%3a%2f%2fwww.example-domain.com%2fdir1%2fimage%2fexample_object.jpg
      文件回写到OSS后,只要文件不被重新覆盖,每次下载这个文件都会添加这个头部,用于表示这个文件来源于镜像。
    • 假设文件已经通过镜像回写到了OSS,如果源站的相同文件发生了变化,OSS不会更新已经存在于OSS上的文件。因为此时文件已经在OSS上,不符合镜像回源的条件。
    • 如果镜像源也不存在此文件,即镜像源返回给OSS的http status为404,那么OSS也返回404给用户。如果是其他非200的状态码(包括因为网络原因等获取不到文件的错误情况),OSS将返回424给用户,错误码为MirrorFailed

重定向

重定向功能的作用是根据设置的回源条件,以及相应的跳转的配置,向用户返回一个3xx跳转。用户可以利用这种跳转的功能对文件做重定向以及在此基础之上的各种业务。其流程如下图所示。

管理回源设置_管理文件_对象/文件(Object)_开发指南_对象存储 OSS 阿里云技术文档 第2张
使用场景:
  • 其他数据源向OSS的无缝迁移

    用户异步的从自己的数据源向OSS迁移数据,在此过程中未迁移到OSS的数据通过URL rewrite的方式返回给用户一个302重定向请求,用户的客户端根据302中的Location从自己的数据源读回数据。

  • 配置页面跳转功能

    例如用户希望隐藏自己的某些前缀开头的object,给访问者返回一个特殊的页面。

  • 配置发生404或500错误时的跳转页面

    发生以上错误的时候用户可以看到一个预先设定的页面,不至于系统发生错误的时候向用户完全暴露OSS的错误。