设置镜像回源
概述
若您为 Bucket 配置了镜像回源,当用户访问该 Bucket 中某一 Object 时,发现该 Object 在 BOS 中并不存在,则 BOS 会立刻向预先配置好的回源地址请求该 Object,保证访问正常进行。在请求过程中,源站返回的数据会自动给到请求用户而用户对该过程无感。同时,该数据也会自动存入 BOS,提升日后该类请求的流畅性。
使用场景
镜像回源主要用于数据无缝迁移到BOS的场景。例如:源站有一批冷数据,同时在不断生成新的热数据。
- 您可以先通过 BOS CMD工具 或其他迁移工具(如果数据量较大可以提交工单),将数据迁移到 BOS 中,同时为相应的 Bucket 配置镜像回源规则;
- 直接把业务域名切换成 BOS 的 Bucket 域名。虽然还有新生成的部分热数据尚未迁移到 BOS 中,但用户依然可以正常从 BOS 访问(BOS一边从源站读取数据,一边将数据存入BOS中),并且访问一次后数据就会存入到BOS;
- 当源站无新的热数据产生时,此时可以扫描一次源站,把残余数据导入 BOS。完成之后,就可以关闭镜像回源设置。
使用限制
- 规则数量:可最多设置20条镜像回源规则,多条规则之间不能设置包含关系的前后缀,若设置全部文件回源,则仅能设置一条规则;
- 回源地址:可配置第三方回源地址或者您的私有Bucket。第三方回源地址访问协议支持HTTP/HTTPS 协议,可以使用域名或 IP,支持加端口。如果回源地址中不带协议,则默认使用 HTTP 协议,私有Bucket仅支持HTTP协议;
- 支持地域:所有地域都支持。
回源规则
触发条件
- 只有当httpcode返回404的情况下,BOS才会执行镜像回源,向源站请求文件;
访问源站
- BOS 在进行镜像回源时,默认不会携带原请求中的 QueryString与Header ,但是您可以主动设置传递QueryString和设置header传递规则;
- BOS 不支持对部分标准的 HTTP header 进行设置,如 Content-Length、Authorization、Range、Date、Content-Md5、Host,以及 x-bce- 的 header;
回源文件命名规则
- 回源返回的文件将以请求源站时使用的文件名存入 BOS 中。若 BOS 向源站请求的URL为http://huiyuan.com/myobject, 则回源到 BOS 的文件名默认为myobject。例如某Bucket设置的回源地址为http://huiyuan.com, 某用户请求的文件myobject.docx不在该Bucket中。则 BOS 会通过http://huiyuan.com/myobject.docx 获取文件,存储到 BOS 的文件名为myobject.docx;
回源请求失败返回规则
- 如果源站返回404状态码,那么BOS也会返回404给用户。
回源文件元信息
BOS会将源站返回的以下HTTP头存为BOS文件的元信息:
Content-Type
Content-Encoding
Content-Disposition
Cache-Control
Expires
Content-Language
Access-Control-Allow-Origin
设置镜像回源
- 登录 对象存储 BOS 管理控制台。
- 在左侧 Bucket 列表中,选择需要设置镜像回源的 Bucket,点击 Bucket 名称进入 Bucket 管理目录。
- 在上方导航栏选择 配置管理 页签。
- 在 配置管理 页面中选择 基础配置,在 镜像回源配置 区域点击 新增配置 对该 Bucket 的镜像回源进行配置(详见配置项说明)。
- 单击确定,完成镜像回源配置;
- 配置完成后,您可以在 镜像回源配置 中看到已生成的回源规则记录,您可查看配置详情,若您希望修改该配置,可以点击 编辑 进行修改;若您希望删除该配置,可以点击 删除,删除后将停止回源,请您谨慎操作。
配置项说明
1. 基本配置
1.1 回源方式
- 镜像:镜像回源模式下,您发出的请求在 BOS 中没找到对应文件时,会自动到源站抓取对应文件保存到 BOS,并将内容直接返回给您;
- 重定向:重定向模式下,满足响应条件的请求会通过 HTTP 重定向的方式返回重定向的地址,浏览器或客户端再到源站获取内容。同时BOS会异步执行到源站抓取对应文件保存到 BOS;
1.2 回源条件
- HTTP 状态码 404:默认当 HTTP 状态码为404时触发回源;
-
文件名前缀:
- 当请求的文件名前缀匹配时,可触发回源规则。例如:您输入的前缀为aa,则访问http://mybucket.com/aa/mypic.jpg 且返回的 HTTP 状态码为404时,会触发回源规则;
- 前缀不能以/结尾;
-
文件名后缀:
- 当请求的文件名后缀匹配时,可触发回源规则。例如:您输入的后缀为.jpg,则访问http://mybucket.com/mypic.png 且返回的 HTTP 状态码为404时,会触发回源规则;
2. 主源站设置
2.1 主源站类型
- BOS私有Bucket:若您需要回源到私有bucket,请勾选此项,并在下拉框中选择目标Bucket。源站是您账号下的另一个 Bucket,回源可能会产生回源 Bucket 的外网下行流量;
- 替换或裁剪前缀:您可以灵活的配置BOS访问您配置源站的url,裁剪与替换均是对您的原始访问url的文件路径部分进行处理,若您的访问地址为:mybucket.bj.bcebos.com/abc/def/myobject.docx,配置裁剪后,将/abc/def裁剪,回源地址为:您配置的回源域名/myobject.docx;替换可对访问地址进行改写,若您配置替换,则必须输入需要替换路径信息,例如:配置替换为123,则回源地址为:您配置的回源域名/123/myobject.docx。为了保证回源地址正确,请谨慎配置并验证控制台中回源地址是否符合预期。
2.2 回源地址
- 访问协议:默认http,若您回源到第三方源站,您可以下拉选择https;
- 回源域名:需填入回源访问的域名或者ip地址&端口号,若您选择回源到私有Bucket,可以直接进行选择;
- 固定文件名称:仅重定向方式支持。您可以勾选固定文件名称,并填写文件名,符合规则的文件触发回源规则,统一返回客户端固定文件名;
- 前缀:填写回源地址的前缀,触发回源规则时,跳转至指定前缀的文件。例如指定前缀为test,访问http://mybucket.com/objectname.doc时触发回源规则,则会跳转至 <回源地址>/test/objectname.doc;
- 后缀:填写回源地址的后缀,触发回源规则时,跳转至指定后缀的文件。例如指定后缀为.doc,访问http://mybucket.com/objectname.doc时触发回源规则,则会跳转至 <回源地址>/objectname.doc;
3. 备源站设置
-
设置备源站:
- BOS支持设置主备源站,以提高镜像回源的可用性和回源的成功率。当您开启备源站后,若主源站回源失败,则BOS会向备源站发起回源请求;
- 仅镜像回源方式支持配置;
- 回源地址: * 备源站与主源站回源规则相同,支持域名或 IP 地址&端口号
4. 其他设置
您可以配置BOS是否传递QueryString信息和HTTP header给源站,和回源文件存储类型。
4.1 Query参数携带
- 请求携带Query字符串:若您勾选请求携带Query字符串,会将 BOS 请求中的 queryString 传递到源站;
4.2 回源文件存储类型
- 回源文件存储类型:回源站拉取的文件,将按照您指定的存储类型进行存储至BOS。若您设置回源规则的bucket为单AZ类型,您可以选择回源文件存储类型为标准存储、低频存储、冷存储、归档存储;若您设置回源规则的bucket为多AZ类型,您可以选择回源文件存储类型为标准存储-多AZ、低频存储-多AZ;
4.3 HTTP header
-
允许传递:BOS 在进行镜像回源时,默认不会携带原请求中的 header ,但是您可以主动设置 header 传递规则。您可以选择允许:
- 传递所有 HTTP header 参数
- 传递指定 HTTP header 参数,单条规则最多10个
- 禁止传递:您可以禁止传递指定 HTTP header 参数,单条规则最多10个;
- 指定参数设置:您可以设置指定 HTTP header 参数、参数值,单条规则最多10个;
配置示例
地址示例
假设访问mybucket存储桶中的文件,文件名为myobject.docx,则访问地址默认为:mybucket.bj.bcebos.com/myobject.docx
若访问地址:mybucket.bj.bcebos.com/myobject.docx (初始地址)
回源地址:http://回源域名/myobject.docx(初始地址)
情况1:若回源条件中,您填写了文件名前缀为abc,则访问地址和回源地址为:
若访问地址为:mybucket.bj.bcebos.com/abc/myobject.docx
回源地址:http://回源域名/abc/myobject.docx
情况2:若回源条件中,您填写了文件名前缀为abc/aa,则访问地址和回源地址为:
若访问地址为:mybucket.bj.bcebos.com/abc/aa/myobject.docx
回源地址:http://回源域名/abc/aa/myobject.docx
情况3:若在情况1的基础上,您继续配置替换文件名前缀为tihuan/edf,设置回源协议选择http、回源域名为www.myweb.com,配置文件后缀为.doc,则访问地址和回源地址为:
若访问地址为:mybucket.bj.bcebos.com/abc/myobject.docx
回源地址:http://www.myweb.com/tihuan/edf/myobject.doc
情况4:若在情况2的基础上,您继续设置裁剪文件名前缀,并配置回源协议选择http、回源域名为www.myweb.com,设置前缀为qianzhui/,则访问地址和回源地址为:
若访问地址为:mybucket.bj.bcebos.com/abc/aa/myobject.docx
回源地址:http://www.myweb.com/qianhui/myobject.docx
流程示例一:
您有名为bucketA的Bucket,需实现如下场景:
-
当请求者访问bucketA中任意不存在的文件时,可以从https://myweb.com 站点的myobject目录中回源文件。 要满足以上场景需求,请参照操作指引配置以下镜像回源规则:
参数 配置 回源方式 - 选择镜像;
回源条件 - 无需配置文件名前后缀,则代表全部文件 ;
主源站设置 - 勾选设置前后缀替换,并填写前缀 myobject ;
- 主源站设置,设置为 http ,回源域名设置为 myweb.com ;
以上规则配置完成后访问流程如下:
- 请求者首次访问bucketA想要获取中任意文件;
- 如果bucketA的中不存在该文件,则BOS会向 https://myweb.com 站点的myobject目录请求文件;
- 第三方源站https://myweb.com 会将文件返回BOS,若没有该文件最终会则返回404。
流程示例二:
您有名为bucketA的Bucket,需实现如下场景:
- 当请求者访问examplefolder目录中不存在的文件时,可以从https://myweb.com 站点的myobject目录中回源文件。
要满足以上场景需求,请参照操作指引配置以下镜像回源规则:
参数 | 配置 |
---|---|
回源方式 |
|
回源条件 |
|
替换 |
|
主回源地址 |
|
备源站地址 |
|
以上规则配置完成后访问流程如下:
- 请求者首次访问bucketA想要获取examplefolder目录下文件;
- 如果bucketA的examplefolder目录中不存在该文件,则BOS会向 https://myweb.com 站点的myobject目录请求文件;
- 第三方源站https://myweb.com 会将文件返回BOS,若第三方源站中也无该文件,将继续访问备源站backup.com,若均没有该文件最终会则返回404。
流程示例三:
您有名bucketA和bucketB的两个Bucket。其中bucketA为公共读,bucketB为私有,需实现如下场景:
- 当bucketA根目录下folderA目录中不存在的文件时,可以从bucketB的folderB目录中获取目标文件。
- 允许将请求URL中携带的query string传递到源站。
- 允许将请求URL中携带的header1、header2 两个HTTP header传递到源站。 要满足以上场景需求,请参照操作指引配置以下镜像回源规则:
参数 | 配置 |
---|---|
回源方式 |
|
回源条件 |
|
主源站类型 |
|
替换或裁剪前缀 |
|
主回源地址 |
|
Query参数携带 |
|
HTTP header |
|
以上规则配置完成后访问流程如下:
- 请求者首次访问bucketA想要获取example.docx文件;
- 如果bucketA中不存在folderA/example.docx文件,则BOS会向bucketB的folderB目录请求文件;
- bucketB会根据传递的参数统计访问信息,并将example.docx返回BOS(若bucketB中也无example.docx文件,则返回404);
- BOS会将获取的文件命名folderA/example.docx,并将命名后的文件存储bucketA;
- 如果请求中还携带了header1、header2的HTTP header时,也会被传递到bucketB。