自定义回源Host

边缘安全加速 ESA回源站请求资源时,默认使用的Host请求头会由源站类型决定。当实际业务需要与默认配置不一致时,需通过修改回源Host请求头,确保请求正确回源。

重要
  • 您的源站服务器需要支持通过Host请求头匹配不同的虚拟站点,否则该功能配置无法达到预期的功能效果。

  • 您所设置的回源规则中的回源Host参数的生效优先级高于管理DNS记录中设置的回源Host参数,在两处同时设置的情况下,回源规则中的回源Host参数配置的值将会最终生效。

背景信息

默认回源Host机制

Host请求头用于指定请求的服务器域名,ESA节点向源站请求资源时,默认Host将遵循:

  • 记录值/源站IPv4/IPv6/域名/负载均衡器/源地址池回源HOST的默认配置是跟随请求HOST,即使用客户端请求中携带的Host作为回源Host。

  • 记录值/源站OSS/S3兼容回源HOST的默认配置是跟随源站域名,即使用源站的域名作为回源Host。

源站将根据回源请求头中的Host(如www.example.com)返回对应站点的资源,如果您的源站上配置了多个站点(如使用了虚拟站点场景),源站将校验回源请求中携带的Host字段和站点名称以返回正确的资源。

虚拟站点场景

虚拟站点技术是一种在单个Web服务器上提供多个网站服务的技术。服务器通过使用不同的域名或主机名来区分和隔离不同的网站。当用户请求访问某个特定的域名或主机名时,服务器会根据请求的域名或主机名,将请求定向到相应的虚拟站点,从而提供相应的网站内容。

创建回源Host规则

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

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

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

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

  5. 回源HOST区域单击配置,配置回源Host值后单击确定即可。

    image

配置虚拟站点示例

Nginx配置虚拟站点场景为例:在Nginx配置文件中的server块设置多个虚拟站点,如:www.example.orgwww.example.netwww.example.com

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

server {
    listen      80;
    server_name example.net www.example.net;
    ...
}

server {
    listen      80;
    server_name example.com www.example.com;
    ...
}

Nginx会优先在HTTP请求头中查找Host字段以确定请求需要路由到的虚拟站点,如果没有匹配到任何一个虚拟站点,Nginx会使用默认的虚拟站点提供服务(若未配置,默认为第一个server配置为默认站点)。为实现各请求正确分配至对应虚站,可参考下方配置实现:

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

  2. 在左侧导航栏,选择规则 > 回源规则,在回源规则页面单击新增规则

  3. 在配置页面填写相关字段后单击确定

    • 规则名称:填写规则名称,如rule-virtual-com

    • 如果请求匹配以下规则...:填写规则条件,如分别选择填写URI完整开头为http://www.example.com

    • 则执行…:在回源HOST区域单击配置,填写需要对应的虚站地址如www.example.com

      image

  4. 按照上一步骤,继续新创建两条规则:rule-virtual-orgrule-virtual-net

    image

    image

相关文档

规则相关的功能,在生效优先级、可重入性、生效颗粒度上存在差异,详细情况请查看规则相关功能的特性说明