-
背景信息 源站与回源HOST的区别如下所示: 源站:源站决定了用户回源时访问的地址,即源站服务器IP。 回源HOST:回源HOST决定了回源时访问到该IP地址上的具体站点。 示例:用nginx服务器搭建源站,IP为x.x.x.x,
域名 为:www.test.com。源站中部署了多个server,如下所示。 server {
listen 80;
server_name www.a.com;
location / {
root html;
}
}
server {
listen 80;
server_name www.b.com;
location / {
root html;
}
} 如果您想要CDN回源到本服务器,您需要在CDN侧将源站配置为:x.x.x.x或www.test.com,CDN回源请求到了源站后,如果您需要访问到的server name为www.a.com,您就需要将回源HOST配置为www.a.com;如果您需要访问到的server name为www.b.com,您就需要将回源HOST配置为www.b.com。
-
配置示例 配置详情:加速域名为“www.example.com”,源站域名为“www.origin.com”,回源HOST配置为“www.example01.com”。 当用户访问“http://www.example.com/test.jpg”文件时,CDN节点没有缓存该资源,此时会解析到源站“www.origin.com”对应的服务器IP(假设IP为192.168.1.1),在服务器的站点“www.example01.com”路径下,找到“test.jpg”文件,返回给用户并缓存到CDN节点。
-
注意事项 域名添加后,CDN默认回源HOST为您的加速域名。如果加速域名不是您期望CDN在回源时访问的站点域名时,您需要自定义回源HOST来指明站点域名。 如果您的源站类型为IP地址或域名,您的回源HOST类型默认为加速域名。 如果加速域名是泛域名,则默认回源HOST是泛域名,且实际回源HOST是访问域名。 如果加速域名不是泛域名,请勿将回源HOST配置为泛域名,回源HOST配置为泛域名不生效。 使用华为云OBS桶作为源站时,默认使用OBS桶域名作为回源HOST。如果您需要配置自定义回源HOST域名,请确保已经将该域名添加到OBS桶的自定义域名,否则将导致访问失败。 如果您以源站域名形式将华为云OBS桶或其他云厂商的对象存储桶接入CDN作为源站,请将回源HOST自定义为您的对象存储桶域名,否则会造成回源失败。
-
配置示例 配置场景1:某客户的域名“www.example.com”配置了
CDN加速 ,缓存规则配置见下图。 配置结果:网站首页不缓存,所有页面均不会忽略URL参数。 配置场景2:设置某个类型的文件不缓存 某客户的域名“www.example.com”配置了CDN加速,由于业务需求,需要对“.do”格式的文件不缓存,同时所有文件都忽略URL参数。 需要在CDN控制台增加一条文件名后缀为“.do”的缓存规则,缓存过期时间设置为“0”。 新规则仅对后续资源缓存生效,新规则配置完成后,建议您刷新“.do”文件所在的URL或者目录,新规则才可以对所有“.do”文件生效。 某客户配置了CDN加速,发现登录界面无限循环,无法登录,停用CDN加速后,可以正常登录。 这是因为CDN节点缓存了登录界面导致的,需要在控制台增加一条针对登录界面的缓存规则,缓存过期时间设置为“0”。以华为云控制台登录界面为例,华为云控制台的登录页面为“https://auth.huaweicloud.com/authui/login.html#/login”,在控制台增加一条全路径:/authui/login.html#/login,缓存过期时间为“0”的缓存规则。 配置场景3:某客户加速域名www.example.com设置了如下图的缓存规则,不知道哪一个规则生效。 用户访问www.example.com/test/cdn.jpg,虽然所有文件、文件名后缀、全路径三条规则都匹配到了,但是由于全路径的优先级为8,在三条规则里优先级最高,所以系统最终匹配全路径/test/*.jpg这条规则。
-
注意事项 每个域名最多可添加60条缓存规则。 CDN缓存过期时间会对“回源率”产生直接的影响。如果CDN缓存过期时间过短,CDN节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大了访问延时;如果CDN缓存过期时间过长,会带来数据更新时间慢的问题。 缓存过期时间设置为0时,该文件的所有请求都将回源,可能存在加速业务中断的风险。 节点缓存的资源,可能会由于热度较低而被提前从CDN节点删除。 如果您修改了缓存规则,请注意: 新的规则仅对后面缓存的资源生效,已经缓存的资源需要等缓存过期后,再次缓存才会遵循新的缓存规则。 如果您想要新的规则对所有资源(包括节点已缓存资源)立即生效,请在修改缓存规则后执行缓存刷新操作。
-
背景信息 CDN节点的缓存策略遵循HTTP标准协议,通过HTTP响应头中的Cache-control: max-age的字段来设置CDN节点上数据的缓存时间。添加缓存规则让CDN用户可以对指定的业务做定制化的数据缓存时间管理。合理的配置缓存时间,能够有效提升命中率,降低回源率,节省用户的带宽。 当用户向CDN节点请求数据时,CDN节点会判断缓存数据是否过期。如果缓存数据未过期,则直接将缓存数据返回给用户,提升获取速度;否则,CDN节点就会向源站发出回源请求,从源站请求最新数据,更新本地缓存,并将最新数据返回给用户。
-
背景信息 HTTP header即HTTP消息头,是指在超文本传输协议(Hypertext Transfer Protocol,HTTP)的请求和响应消息中的消息头部分,定义了HTTP传输过程中的具体参数。 跨域资源共享CORS(Cross-origin resource sharing)简称跨域访问,当A网站去访问B网站的资源时,就会发出跨域请求。如果此时B网站的资源不允许A网站进行跨域资源访问,就会遇到跨域问题。此时就可以使用HTTP Header配置功能,在返回的响应消息中添加所需的消息头,以实现跨域访问等目的。
-
注意事项 部分头部不支持自助设置/删除,具体清单请参见限制条件。 HTTP响应头配置规则最多可配置10条。 由于HTTP header配置是针对域名,因此一旦配置生效,用户对该域名下任意一个资源的响应消息中均会加入所配置的消息头。HTTP响应消息头配置仅会影响客户端(浏览器)的响应行为,不影响CDN节点的缓存行为。 如果加速域名在CDN侧配置了跨域规则,请确保源站配置了同样的规则。如果您的域名源站是OBS桶域名,请前往OBS侧配置跨域资源共享。
-
支持配置的响应头 华为云CDN支持以下几种HTTP响应消息头进行自定义取值。 Content-Disposition Content-disposition消息头用来激活客户端下载并指定所下载文件的名称。 服务端向客户端浏览器发送的文件,如果是浏览器支持的文件类型(如txt、jpg等),则默认使用浏览器打开。如果该文件需要用户以附件形式下载并保存为指定名称的文件,则可通过配置Content-disposition消息头实现。 如果您使用了2022年1月1日以后创建的OBS桶作为源站,并且需要支持在线预览功能,您要设置“Content-Disposition”的值为“inline”,详见如何在浏览器中在线预览OBS中的对象?。 Content-Language Content-Language消息头用来指明向客户页面端提供的用户偏好语言或语言组合,可以为不同身份用户定制不同的内容。 Access-Control-Allow-Origin Access-Control-Allow-Origin响应头携带了服务端验证后允许的跨域请求域名。对于简单跨域请求而言,浏览器经此消息头可以确认是否返回所请求的资源内容给客户端。对于预检请求而言,浏览器经此消息头可以确认是否可以向服务端发起真正的跨域请求。 为防止因浏览器缓存导致报跨域错误,跨域请求头“Access-Control-Allow-Origin”配置完成后,请您及时清理浏览器缓存。 Access-Control-Allow-Methods Access-Control-Allow-Methods响应头携带了服务端验证后允许的跨域请求方法。对于简单跨域请求而言,浏览器经此消息头可以确认是否返回所请求的资源内容给客户端。对于预检请求而言,浏览器经此消息头可以确认是否可以向服务端发起真正的跨域请求。 Access-Control-Max-Age Access-Control-Max-Age响应头携带了服务端允许的跨域预检请求结果允许缓存的时间。浏览器经此消息头可以确认预检请求结果的缓存时间,在缓存有效期内,浏览器可以使用缓存的预检请求结果判断是否向服务端发起跨域请求。缓存的预检请求结果过期后,下次请求时浏览器需再次向服务端发送预检请求。 Access-Control-Expose-Headers Access-Control-Expose-Headers用于指定浏览器可以暴露给客户端的响应消息头。您可以通过配置Access-Control-Expose-Headers自定义客户端可见的响应消息头。浏览器默认客户端可见的响应头有:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。 自定义响应头 如果上述响应头不能满足您的业务需求,CDN支持自定义响应头配置,支持以字母开头,字母、数字和短横杠(-)组合,长度1~100以内的自定义响应头名称。
-
限制条件 如果您的后台存在特殊配置,暂不支持配置Content-Type、Expires、Cache-Control、Vary。 以下响应头仅支持修改响应头,不支持将“响应头操作”类型设置为“删除”: Content-Base Content-Type Server Content-Language Cache-Control Expires CDN暂不支持以下响应头配置: a_dynamic upgrade content-md5 accept-ranges meter content-range keep-alive www-authenticate date allow proxy-authenticate range set-cookie connection etag authentication-info content-encoding retry-after last-modified proxy-authorization error location content-length if-modified-since transfer-encoding content-location host
-
CDN回源机制 当源站存在多个IP地址时,CDN回源时采用负载均衡机制,详情如下: 一次回源请求最多访问两个高优先级源站IP,如果两个IP均回源失败,切换到低优先级源站IP,最多访问两个低优先级源站IP。一次用户请求CDN会进行四次回源尝试,如果四次均失败,此次用户请求失败。 回源失败:指连接超时、连接失败或者收到源站的5xx错误码。 当您的源站是域名,且解析到多个IP地址时,最多重试2个IP,如果访问两个IP均失败,则切换到下一个源站。
-
相关文档 您可以前往这里查看什么是源站。 如果您需要自定义回源协议,请参考修改回源协议。 如果您的源站绑定了多个域名,且CDN回源协议为HTTPS时,可配置回源SNI指定CDN节点回源时访问的域名,详情请参考配置回源SNI。 如果您需要修改CDN节点回源请求的超时时间,请参考修改回源超时时间。 如果您需要自定义CDN节点回源时携带的请求头信息,请参考配置回源请求头。 客户端请求异常时,如果需要排查问题出自源站还是CDN节点,请参考排查访问异常是CDN节点问题还是源站问题。
-
IP地址校验模式 规则引擎功能的“IP地址校验模式”分为两种,使用不同的“IP地址校验模式”会影响到CDN节点对客户端IP的判断: 建联 IP:该模式匹配的是客户端与CDN节点之间建连使用的IP,如果客户端与CDN节点之间有经过代理服务器,那么建联IP=代理服务器IP。 x-forwarded-for头:该模式匹配的是用户请求中x-forwarded-for请求头携带的左边第一个IP,不论客户端与CDN节点之间是否有经过代理服务器,x-forwarded-for头IP都=客户端真实IP。 示例:假设客户端真实IP为10.10.10.10,代理服务器IP为192.168.0.1。 没有经过代理服务器: 用户请求中x-forwarded-for请求头值:10.10.10.10。 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)=客户端与CDN节点建连IP=10.10.10.10。 经过代理服务器: 用户请求中x-forwarded-for请求头值:10.10.10.10,192.168.0.1。 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)=10.10.10.10。 客户端与CDN节点建连IP=代理服务器IP=192.168.0.1。 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)≠客户端与CDN节点建连IP。
-
执行操作 当客户端请求匹配了触发条件中的规则时,将执行相关配置。当前规则引擎支持的配置详见表2。 表2 规则引擎支持的配置项 功能分类 功能名称 说明 基础配置 HTTP header响应头 与“高级配置”中的“HTTP header配置(跨域请求)”配置要求一致,生效范围不同: HTTP header响应头:仅对规则匹配的资源生效。 HTTP header配置(跨域请求):对域名下所有资源生效。 高级回源 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的高级回源配置。 回源请求头 匹配了条件规则中触发条件的客户端请求,需要遵循该规则中回源请求头配置。 提升访问安全 访问控制 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的访问控制配置。当前可配置允许和拒绝。 允许:匹配条件的请求可正常访问资源。 拒绝:匹配条件的请求将被拦截,返回403状态码。 请求限速 匹配了条件规则中触发条件的客户端请求,需要遵循该规则中请求限速配置。 提升命中率 回源URL改写 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的回源URL改写配置。 改写方式:定义如何获取改写内容,支持配置精确改写和捕获改写。非规则引擎中的回源URL改写功能,匹配方式所有文件、URL路径对应精确改写,通配符对应捕获改写。 缓存规则 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的缓存规则配置。 访问URL重写 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的访问URL重写配置。 缓存配置 状态码缓存过期时间 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的状态码缓存过期时间配置。 浏览器缓存过期时间 匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的浏览器缓存过期时间配置。
-
注意事项 如需使用规则引擎功能,请提交工单申请开通。 单域名最多可配置10条规则。 “业务类型”为“全站加速”的域名,暂不支持配置规则引擎。 后台有特殊配置的域名暂不支持配置规则引擎。 规则引擎功能和普通功能同时配置时,规则引擎优先级更高。 新增规则默认位于顶部,存在多条规则时顶部优先级大于底部,即如果同时匹配多条规则,高优先级的规则生效。 一个触发条件最多支持三级嵌套,最后一个层级的逻辑运算符只能是“并且”或“或者”,不能组合使用。