配置回源301/302跟随

回源301/302跟随功能同时支持源站的301302响应状态码,本文中所有302状态码可以实现的功能,301状态码也同样支持。配置回源301/302跟随功能后,边缘安全加速 ESA节点会代替用户直接处理源站响应的301/302状态码的内容,减少数据交互流程,加快用户获取资源的速度。

前提条件

源站使用301302重定向方式。

背景信息

301/302HTTP协议中的状态码,代表已存在的资源被改变了位置,导致用户无法访问到对应的资源。基于此情况,服务器通常会在消息响应头中加入Location参数,当客户端接收到带有Location头的301/302响应时,会跳转到Location对应的地址去请求资源。

工作原理

回源301/302跟随功能指ESA节点回源请求资源时,如果收到源站返回的301/302状态码,将由ESA节点代替用户直接处理301/302状态码的内容,即直接跳转到源站301/302响应中的Location地址去获取资源,不会直接返回301/302状态码给用户。

image

  1. 用户向ESA节点请求访问http://example.com/examplefile.txt文件。

  2. ESA节点上未缓存该文件,ESA节点回源站请求该文件。

  3. 源站收到请求后,向ESA节点返回301/302状态码,Location地址指向http://www.example.org/examplefile.txt

  4. ESA节点收到源站的响应后,直接向Location地址http://www.example.org/examplefile.txt发起请求。

  5. ESA节点获取到所需资源后,缓存到ESA节点上。

  6. ESA节点将获取到的资源返回给用户。

此时,如果其他用户再请求访问http://example.com/examplefile.txt文件,会直接在ESA节点命中缓存并返回给用户。

注意事项

  • 源站返回给ESA节点301/302响应中的Location标头的格式支持下面这2种形式:

    • 标准域名格式:http://www.example.net/index.html

    • IPv4地址格式:http://10.10.10.10/index.html

  • ESA节点在发起跟随请求的时候,携带的Host标头的值遵循以下规则:

    • 如果源站响应的Location标头中的源站为域名形式,Host标头的值等于源站的域名。

    • 如果源站响应的Location标头中的源站为IP形式,Host标头的值等于原始回源请求中携带的Host标头值。

  • ESA节点在发起跟随请求的时候,携带的Host标头信息不受是否保留原始请求标头的影响。

操作步骤

  1. ESA控制台,选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择规则 > 回源规则

  3. 单击新增规则,填写规则名称

  4. 当请求匹配以下规则时...区域设置要匹配的用户请求特征,具体配置规则请参见规则表达式的组成

  5. 则执行…区域,单击配置,打开跟随次数上限开关,配置回源301/302跟随。

    image

    • 跟随次数上限:指在一次用户请求过程中,ESA节点可以跟随Location地址跳转访问的最大次数,超出限制将直接返回301/302状态码给用户。默认值为2,取值范围为1~5。

      说明

      配置301/302跟随次数上限,会影响回源次数上限。回源次数上限指在一次用户请求过程中,ESA节点可以回源访问源站的最大次数。

      回源次数上限=301/302跟随次数上限+1,即默认的回源次数上限为3,取值范围为2~6。

    • 原始请求参数:301/302跟随时是否保留原请求参数回目标源站。如果您选择保留,那么请求参数将会传递给Location地址对应的服务器。

    • 原始请求标头:301/302跟随时是否保留原请求头回目标源站。如果您选择保留,那么请求头参数将会传递给Location地址对应的服务器。

    • 修改302后的回源hostESA节点在发起跟随请求的时候,携带的Host标头的值遵循以下规则。

      • 如果源站响应的Location标头中的源站为域名形式,Host标头的值等于源站的域名。

      • 如果源站响应的Location标头中的源站为IP形式,Host标头的值等于原始回源请求中携带的Host标头值。

      • 配置了参数,不论源站响应的Location标头中的源站为域名还是IP形式,都固定使用这里配置的域名作为Host。

  1. 单击确定,完成配置。