当您的用户向您的对象存储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的错误。