本文介绍几种特殊场景下的镜像回源配置示例。
示例一
客户A在华东1(杭州)地域创建了bucket-01,需实现如下场景:
当请求者访问examplefolder目录中不存在的文件时,可以从
https://example.com
站点的destfolder目录中回源文件。需要检查回源文件的MD5值,MD5值不匹配的文件不在bucket-01中保存。
要满足以上场景需求,请按如下步骤配置镜像回源规则:
登录OSS管理控制台。
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择 。
在镜像回源页面,单击创建规则。
在创建规则面板,按以下说明配置必要参数,其他参数保留默认配置。
参数
配置
回源类型
选中镜像。
回源条件
选中文件名前缀,并设置为examplefolder/。
替换或截取前缀
选中是否替换或截取前缀,并设置为destfolder/。
说明该选项仅在设置了回源条件中的文件名前缀后显示。
回源地址
第一列设置为https,第二列设置为example.com,第三列置空。
检查MD5
选中是否检查MD5。
当回源请求中返回的response包含Content-MD5字段时,OSS会检查回源文件的MD5值与Content-MD5字段值是否匹配。
匹配:客户端将获取文件,且OSS保存回源文件。
不匹配:由于计算MD5需要完整的文件数据,而此时文件已经透传回客户端,所以客户端能获取到文件,但OSS不会保存回源文件。
单击确定。
以上规则配置完成后访问流程如下:
请求者首次访问
https://bucket-01.oss-cn-hangzhou.aliyuncs.com/examplefolder/example.txt
。如果bucket-01中不存在examplefolder/example.txt文件,则OSS向
https://example.com/destfolder/example.txt
请求文件。获取到目标文件后,OSS进行以下操作:
如果回源请求中返回的response包含Content-MD5字段,OSS会计算回源文件的MD5值,并与Content-MD5字段进行匹配。MD5匹配通过则将文件重命名为examplefolder/example.txt后保存到bucket-01,并将文件返回给请求者;匹配不通过时仅返回文件给用户,不保存该文件到bucket-01。
如果回源请求中返回的response不包含Content-MD5字段,OSS将文件重命名为examplefolder/example.txt后保存到bucket-01,并将文件返回给请求者。
示例二
客户B在华北2(北京)地域创建了bucket-02,拥有源站A(https://example.com
)、源站B(https://example.org
)两个目录一致的站点,需实现如下场景:
当请求者访问bucket-02/dir1目录中不存在的文件时,从
https://example.com
站点的example1目录中获取。当请求者访问bucket-02/dir2目录中不存在的文件时,从
https://example.org
站点的example2目录中获取。根据源站A和源站B是否设置重定向策略,决定是否向重定向指定的地址请求文件。
要满足以上场景需求,请参照示例一中的操作指引配置以下两条镜像回源规则:
规则一:
参数
配置
回源类型
选中镜像。
回源条件
选中文件名前缀,并设置为dir1/。
替换或截取前缀
选中是否替换或截取前缀,并设置为example1/。
说明该选项仅在设置了回源条件中的文件名前缀后显示。
回源地址
第一列设置为https,第二列设置为example.com,第三列置空。
3xx请求响应策略
选中跟随源站重定向请求。
说明未选中跟随源站重定向请求时,OSS会直接将源站重定向规则指定的地址返回给请求者。
规则二:
参数
配置
回源类型
选中镜像。
回源条件
选中文件名前缀,并设置为dir2。
替换或截取前缀
选中是否替换或截取前缀,并设置为example2/。
说明该选项仅在设置了回源条件中的文件名前缀后显示。
回源地址
第一列设置为https,第二列设置为example.org,第三列置空。
3xx请求响应策略
选中跟随源站重定向请求。
以上规则配置完成后访问流程如下:
请求者首次访问
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir1/example.txt
。如果bucket-02下dir1目录中不存在example.txt文件,则OSS向
https://example.com/example1/example.txt
请求文件。如果源站A针对example1/example.txt设置了重定向规则,则OSS会向源站重定向规则指定的地址重新发起请求,获取到文件后会将文件命名为dir1/example1/example.txt保存至bucket-02,并返回给请求者。
如果源站A未针对example1/example.txt设置重定向规则,则OSS获取到文件后会将文件命名为dir1/example1/example.txt保存至bucket-02,并返回给请求者。
如果请求者访问
https://bucket-02.oss-cn-beijing.aliyuncs.com/dir2/example.txt
,则通过镜像回源规则获取的文件将存储在bucket-02的dir2/example2目录。
示例三
客户C在华东2(上海)地域创建了bucket-03和bucket-04两个Bucket。其中,bucket-03为公共读,bucket-04为私有,需实现如下场景:
当请求者bucket-03根目录下examplefolder目录中不存在的文件时,可以从bucket-04的examplefolder目录中获取目标文件。
允许将请求URL中携带的query string传递到源站。
允许将请求URL中携带的
header1
、header2
、header3
三个HTTP header传递到源站。
要满足以上场景需求,请参照示例一中的操作指引配置以下镜像回源规则:
参数 | 配置 |
回源类型 | 选中镜像。 |
回源条件 | 选中文件名前缀,并设置为examplefolder/。 |
源站类型 | 选中回源OSS私有Bucket,并在回源Bucket下拉列表选择bucket-04。 说明 配置源站类型时,OSS会在RAM服务中生成 |
回源地址 | 第一列设置为https,其他置空。 |
回源参数 | 选中携带请求字符串。 OSS会将URL请求中的query string传递到源站。 |
设置HTTP header传递规则 | 选中传递指定HTTP header参数,并添加header1、header2、header3三个HTTP header。 回源规则不支持传递部分标准HTTP header,例如 重要 回源私有Bucket时,请勿选择传递所有HTTP header参数,否则会导致回源失败。 |
以上规则配置完成后访问流程如下:
请求者首次访问
https://bucket-03.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss
。如果bucket-03中不存在examplefolder/example.png文件,则OSS会向
https://bucket-04.oss-cn-shanghai.aliyuncs.com/examplefolder/example.png?caller=lucas&production=oss
请求文件。bucket-04会根据传递的
?caller=lucas&production=oss
参数,将example.png返回给OSS。OSS会将获取的文件命名为examplefolder/example.png,并将命名后的文件存储至bucket-03。
如果请求中还携带了header1、header2、header3的HTTP header时,也会被传递到bucket-04。