当边缘安全加速 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规则
配置虚拟站点示例
以Nginx配置虚拟站点场景为例:在Nginx配置文件中的server块设置多个虚拟站点,如:www.example.org
、www.example.net
、www.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
配置为默认站点)。为实现各请求正确分配至对应虚站,可参考下方配置实现:
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择
,在回源规则页面单击新增规则。在配置页面填写相关字段后单击确定:
规则名称:填写规则名称,如
rule-virtual-com
。如果请求匹配以下规则...:填写规则条件,如分别选择填写
URI完整
,开头为
,http://www.example.com
则执行…:在回源HOST区域单击配置,填写需要对应的虚站地址如
www.example.com
。
按照上一步骤,继续新创建两条规则:
rule-virtual-org
和rule-virtual-net
。
相关文档
规则相关的功能,在生效优先级、可重入性、生效颗粒度上存在差异,详细情况请查看规则相关功能的特性说明。