在发起回源请求时携带的 Host 请求头默认为加速域名,可通过本功能自定义回源 Host 请求头。
背景介绍
当存在多个加速域名、每个域名负责加速不同静态资源时,常见的做法是搭建多个源站,以支持不同加速域名的回源请求。若加速域名数量较多而回源流量较少,重复建站会造成资源浪费,可通过虚拟站点技术解决该问题。
虚拟站点技术
虚拟站点技术是一种在单个 Web 服务器上提供多个网站服务的技术。服务器使用不同的域名或主机名区分和隔离不同的网站。当用户请求访问某个特定的域名或主机名时,服务器会根据请求中的域名或主机名,将请求定向到相应的虚拟站点,从而提供对应的网站内容。
Nginx 相关实现
Nginx 支持通过 server 区块配置多个虚拟站点,示例如下:
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;
...
}
上述配置了 3 个虚拟站点,分别为 example.org、example.net、example.com。Nginx 使用 server_name 匹配 HTTP 请求头中的 Host 字段选择虚拟站点;如果未匹配到任何一个虚拟站点,Nginx 会使用默认的虚拟站点提供服务(若未配置,默认为第一个 server 配置的默认站点)。
默认回源HOST
访问 URL 链接时,如果不指定 Host 字段,该请求的 Host 字段默认为访问 URL 链接的主机加端口部分。默认将 Host 字段设置为加速域名,也可根据源站的虚拟站点配置自定义 Host 字段的默认值。
源站服务器需支持通过 Host 请求头匹配不同的虚拟站点,否则该功能配置无法达到预期效果。
当源站使用 HTTPS 协议时,除了配置默认回源HOST,通常还需配置默认回源SNI。若回源HOST与回源SNI配置不一致(例如 HOST 为源站域名、SNI 为加速域名),可能导致 SSL 握手失败或源站返回错误。建议将回源HOST和回源SNI设置为相同的域名(通常为源站域名或加速域名,需与源站证书及虚拟主机配置匹配)。控制台的回源配置页面,"默认回源HOST"和"默认回源SNI"是两个独立的配置项,需分别单击修改配置进行设置。
操作步骤
-
登录阿里云CDN平台。
-
在左侧导航栏单击域名管理。
-
在域名列表中选择目标域名。
-
单击回源配置 Tab。
-
回源HOST区域,单击修改配置。
-
打开回源HOST开关,选择域名类型。
|
域名类型 |
说明 |
|
加速域名 |
以终端用户访问的加速域名作为回源HOST。 |
|
源站域名 |
以源站服务器的域名作为回源HOST。源站信息为 IP 地址类型时,选项置灰,不可选择。源站信息为 OSS 域名时,将会同步开启默认回源HOST功能,并且设置域名类型为源站域名。 |
|
自定义域名 |
以用户指定的域名作为回源HOST。自定义域名需确保为已绑定的域名,否则回源失败。适用于源站绑定了多个域名,且希望用户从指定域名获取资源的场景。 |
当源站使用 HTTPS 协议时,除了配置回源HOST外,还需要在同一回源配置页面配置默认回源SNI。建议将回源HOST和默认回源SNI设置为相同的域名(通常为源站域名),以避免因两者不一致导致 SSL 握手失败或源站拒绝服务。例如,如果回源HOST设置为源站域名,而默认回源SNI设置为加速域名,可能导致源站证书校验失败。在控制台中,回源HOST和默认回源SNI是同一回源配置页面上的两个独立配置项,分别通过修改配置按钮进行配置。
-
单击确定。
配置示例
示例一:源站类型为域名
|
域名 |
说明 |
|
加速域名: |
功能默认关闭,可主动开启默认回源HOST功能。 |
示例二:源站类型为IP地址
|
域名 |
说明 |
|
加速域名: |
功能默认关闭,可主动开启默认回源HOST功能。 |
示例三:源站类型为OSS域名
当源站信息为 OSS 域名时,将会同步开启默认回源HOST功能,并且设置域名类型为源站域名。
|
域名 |
说明 |
|
加速域名: |
回源域名类型说明: |
常见问题
配置回源HOST后遇到访问报错(如返回 404、500、502、403,重定向次数过多 ERR_TOO_MANY_REDIRECTS,或页面跳转失败),排查方法请参见回源排障指南。