自定义回源Host

更新时间:
复制 MD 格式

边缘安全加速 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服务器上提供多个网站服务的技术。服务器通过使用不同的域名或主机名来区分和隔离不同的网站。当用户请求访问某个特定的域名或主机名时,服务器会根据请求的域名或主机名,将请求定向到相应的虚拟站点,从而提供相应的网站内容。

源站 404 排查

ESA 接入后,如果 HTTPS 访问返回 404,按以下步骤排查源站配置。

1. 确认问题来源

通过本地 hosts 文件将加速域名绑定到源站 IP,直接通过 HTTPS 访问源站。如果源站也返回 404,说明问题在源站而非 ESA。

2. 检查 Nginx 的 server_name

确认 Nginx 配置文件中的 server_name 与 ESA 控制台的 回源HOST 一致。当 server_name 与回源 Host 不匹配时,源站返回 404。

3. 检查回源 Host 配置

在 ESA 控制台的 回源规则 页面,确认 回源HOST 设置为域名而非 IP。回源 Host 设置为 IP 时,源站的 server_name 无法匹配该 IP,将返回 404。

说明

移除源站 SSL 监听配置导致的连接失败(521/522)不属于本节排查范围,相关处理方法请参见 ESA 521/522 错误文档。

创建回源Host规则

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

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

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

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

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

配置虚拟站点示例

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

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

常见问题

如何验证回源配置修改是否生效及排查源站功能异常?

验证回源配置变更

修改回源配置后,可通过以下方式确认是否生效:

  • 访问网站,检查返回内容是否来自新的源站。

  • 查看源站服务器的访问日志,确认是否有来自 ESA 节点的请求记录。

排查源站功能失效问题(如语言切换失效)

若开启 ESA 后源站某项功能出现异常:

  • 通过本地 hosts 文件将源站域名绑定到源站 IP,绕过 ESA 直接访问源站,排除源站自身问题。

  • 清除浏览器缓存后重试,确认问题是否与缓存相关。

相关文档

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