本文介绍几种特殊场景下的镜像回源规则配置。

镜像回源规则的配置方式,请参见镜像回源常见配置

示例1

客户A在华东1(杭州)有名为examplebucketA的Bucket,需实现如下场景:
  • 当请求者访问examplefolder目录中不存在的文件时,可以从https://example.com站点的destfolder目录中回源文件。
  • 源站中存在部分文件名以正斜线(/)开头的文件,这部分文件要正确回源到examplebucketA中。
  • 需要检查回源文件的MD5值,MD5值不匹配的文件不在examplebucketA中保存。
配置说明如下:
参数 配置
回源条件 选中文件名前缀,并设置为examplefolder/
是否替换或截取前缀 选中是否替换或截取前缀,并设置为destfolder/
回源地址 第一列设置为https,第二列设置为example.com,第三列置空。
透传/到源站 选中是否透传/到源站

回源文件的文件名以正斜线(/)开头时,OSS会删除正斜线(/)后将文件保存到Bucket中。

说明 此功能已在美国(硅谷)、美国(弗吉尼亚)和华东1(杭州)地域公测,您可以提交工单申请试用。
检查MD5 选中是否检查MD5

当回源请求中返回的response包含Content-MD5字段时,OSS会检查回源文件的MD5值与Content-MD5字段值是否匹配。

  • 匹配:客户端将获取文件,且OSS保存回源文件。
  • 不匹配:由于计算MD5需要完整的文件数据,而此时文件已经透传回客户端,所以客户端能获取到文件,但OSS不会保存回源文件。
规则配置完成后访问流程如下:
  1. 请求者首次访问https://examplebucketA.oss-cn-hangzhou.aliyuncs.com///examplefolder/example.txt
  2. 若examplebucketA中不存在//examplefolder/example.txt文件,则OSS向https://example.com///destfolder/example.txt请求文件。
  3. 获取到目标文件后,OSS进行以下操作:
    • 若回源请求中返回的response包含Content-MD5字段,OSS会计算回源文件的MD5值,并与Content-MD5字段进行匹配。MD5匹配通过则将文件重命名为examplefolder/example.txt后保存到examplebucketA,并将文件返回给请求者;匹配不通过时仅返回文件给用户,不保存该文件到examplebucketA。
    • 若回源请求中返回的response不包含Content-MD5字段,OSS将文件重命名为examplefolder/example.txt后保存到examplebucketA,并将文件返回给请求者。

示例2

客户B有华北2(北京)名为examplebucketB的Bucket和源站A(https://exampleA.com)、源站B(https://exampleB.com)两个目录一致的站点,需实现如下场景:
  • 当请求者访问pathA/example目录中不存在的文件时,从https://exampleA.com站点的example目录中获取。
  • 当请求者访问pathB/example目录中不存在的文件时,从https://exampleB.com站点的example目录中获取。
  • 两个源站针对某些文件还设置了重定向策略,需要跟随重定向获取最终数据保存到exampleBucketB中。
此需求需配置两条镜像回源规则,配置说明如下:
  • 规则一:
    参数 配置
    回源条件 选中文件名前缀,并设置为A/example/
    是否替换或截取前缀 选中是否替换或截取前缀,并设置为example/
    回源地址 第一列设置为https,第二列设置为exampleA.com,第三列置空。
    3xx请求响应策略 选中跟随源站重定向请求
    说明 未选中跟随源站重定向请求时,OSS会直接将源站重定向规则指定的地址返回给请求者。
  • 规则二:
    参数 配置
    回源条件 选中文件名前缀,并设置为B/example/
    是否替换或截取前缀 选中是否替换或截取前缀,并设置为example/
    回源地址 第一列设置为https,第二列设置为exampleB.com,第三列置空。
    3xx请求响应策略 选中跟随源站重定向请求
规则配置完成后访问流程如下:
  1. 请求者首次访问https://examplebucketB.oss-cn-beijing.aliyuncs.com/A/example/example.txt
  2. 若examplebucketA中不存在A/example/example.txt文件,则OSS向https://exampleA.com/example/example.txt请求文件。
  3. 根据源站是否设置重定向规则,请求结果如下:
    • 若源站A针对example/example.txt设置了重定向规则,则OSS会向源站重定向规则指定的地址重新发起请求,获取到文件后会将文件命名为A/example/example.txt保存至examplebucketA,并返回给请求者。
    • 若源站A未针对example/example.txt设置重定向规则,则OSS获取到文件后会将文件命名为A/example/example.txt保存至examplebucketA,并返回给请求者。
若请求者访问https://examplebucketB.oss-cn-beijing.aliyuncs.com/B/example/example.txt,则通过回源规则获取的文件存储在examplebucketB的B/example目录。

示例3

客户C在华东2(上海)地域有名为examplebucketC和examplebucketD的两个Bucket。其中examplebucketC为公共读,examplebucketD为私有,需实现如下场景:
  • 当请求者examplebucketC根目录下examplefolder目录中不存在的文件时,可以从examplebucketD的examplefolder目录中获取目标文件。
  • 允许将请求URL中携带的query string传递到源站。
  • 允许将请求URL中携带的headerAheaderBheaderC三个HTTP header传递到源站。
配置说明如下:
参数 配置
回源条件 选中文件名前缀,并设置为examplefolder/
源站类型 选中回源OSS私有Bucket,并在回源Bucket下拉列表选择examplebucketD
说明 配置源站类型时,OSS会在RAM服务中生成AliyunOSSMirrorDefaultRole角色,并授予该角色只读访问所有Bucket的权限(AliyunOSSReadOnlyAccess)。
回源地址 第一列设置为https,其他置空。
回源参数 选中携带请求字符串

OSS会将URL请求中的query string 传递到源站。

设置HTTP header传递规则 选中传递指定HTTP header参数,并添加headerAheaderBheaderC三个HTTP header。

回源规则不支持传递部分标准HTTP header(例如authorizationauthorization2rangecontent-lengthdate等)以及以x-oss-oss-x-drs-开头的HTTP header。

规则配置完成后访问流程如下:
  1. 请求者首次访问https://examplebucketC.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss
  2. 若examplebucketC中不存在examplefolder/example.png文件,则OSS会向https://examplebucketD.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss请求文件。
  3. examplebucketD会根据传递的?caller=lucas&production=oss参数统计访问信息,并将example.png返回给OSS。
  4. OSS会将获取的文件命名为examplefolder/example.png后存入examplebucketC。
若请求中还携带了headerAheaderBheaderC HTTP header时,也会被传递到examplebucketD。