作者:烨烁
CDN的配置项中包括源站设置和回源host设置两个参数。这两个参数概念可能会出现混淆并且设置错误会导致访问出现异常,因此本文主要向大家介绍源站设置和回源host两个参数的概念和设置方法。
产品文档参考:CDN回源HOST
一、基本概念
源站设置的详细设置方法在【CDN 常见问题】CDN 接入配置及常见问题文档中已经详细说明了各业务类型的源站设置的方法。从该文档中可以知晓源站设置不管是什么类型,其实其意义都是需要将该域名解析成IP后根据该IP回源到源站服务器上。而真正是哪个站点提供服务其实与源站设置是没有关系的。因此这里需要回源Host的概念。
回源Host其意义表示为CDN节点回源请求头中带有的Host字段。在HTTP 1.1协议中请求头中必须要有Host字段,根据HTTP RFC官方文档说明:
The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL.
即表示了Host字段的值表示的是原始URL给出的服务器或者网关的命名授权。
而当源站设置解析得到的IP对应的服务器上有多个站点配置了不同的命名Host,那么CDN回源就会根据回源Host字段决定是由哪个站点提供服务。
举例说明,如下是一段nginx配置server的常用配置方法,从该配置上我们可以查看到该服务器上配置一个名为www.aliyun.com的站点监听服务器的80端口,并设置了该站点的根目录路径。
server {
listen 80; #default_server;
server_name www.aliyun.com;
location / {
root /alidata/www/www-aliyun-com/;
}
}
然后创建cdn加速域名cdntest1.aliyun.com,设置其源站为www.aliyun.com,并设置回源端口为80端口。此时如果设置回源host为关闭或者设置为cdntest1.aliyun.com时,将导致CDN回源时到源站查找server_name为cdntest1.aliyun.com的站点,而由于源站配置配置对应的站点导致出现4XX的错误了。因此此时正确的配置应该将回源host改成www.aliyun.com,这样才可以找到对应的server并到其location目录中查找对应的文件返回给CDN节点。
图1. CDN的回源Host正确配置
二、CDN加速OSS的回源Host设置
在CDN加速OSS的经典场景中回源Host的设置是有两种方法,下面逐一介绍:
1、设置回源Host为CDN域名本身。当设置回源Host为加速域名时那么要求其域名是必须在OSS的域名管理中添加该域名后才可以设置的,否则会导致CDN回源无法查找到该名称对应的是哪个bucket导致无法回源。
图2. OSS绑定域名示意图
2、设置回源Host为OSS域名本身。这种情况下OSS是不需要做任何的调整即可保证CDN正常回源到该bucket获取文件。但是此种设置时在OSS的日志中记录的Sync Request记录项为-,而不会记录为CDN(OSS日志格式请参考: OSS日志格式),因此建议在CDN加速OSS的场景中建议以第一种方式。