用户在配置华为云  CDN  的  HTTPS  回源时,如果遇到“回源不匹配”导致的  504  超时或资源加载失败,通常是因为回源协议、回源  SNI  和回源  HOST  这三项配置没有对齐。用户可以先通过下面这个表格快速理解核心配置,再按场景进行排查:

配置项      作用      如何匹配源站  

回源协议          决定  CDN  节点用  HTTP  还是  HTTPS  访问源站      必须与源站支持的协议一致。若源站强制  HTTPS,回源协议必须选  HTTPS    

回源  SNI          当源站  IP  绑定多个域名时,CDN  通过  SNI  告诉源站要访问的是哪个域名    必须设置为源站上实际对应的站点域名(通常是证书绑定的域名)  

回源  HOST            CDN  回源时,在  HTTP  请求头中携带的域名,告诉源站要访问哪个站点      应设置为源站上实际对应的站点域名,而非加速域名(除非二者相同)  

一、分场景排查与配置建议

理解了上面的关系后,你可以根据源站的实际情况,对照以下场景进行操作:

场景一:源站是  IP  地址,且该  IP  上托管了多个  HTTPS  站点

    这是最容易出错的情况。如果你的源站填写的是  IP,但该服务器上绑定了多个  HTTPS  域名(例如  `a.com`  和  `b.com`),此时必须配置回源  SNI。

操作建议:在  CDN  控制台的“回源配置”中,找到“回源  SNI”设置项  。将其值设置为你的源站能正确识别并返回对应  SSL  证书的域名(例如你要加速的域名  `www.example.com`)。如果不配置,CDN  回源时不会携带  SNI  信息,源站服务器无法确定返回哪个证书,可能导致握手失败或返回错误内容。

场景二:源站是  OBS  桶或其他云存储

    如果你的源站是对象存储(如华为云  OBS),请注意  OBS  桶通常只支持  HTTP  协议回源。

操作建议:虽然客户端可以通过  HTTPS  访问  CDN,但如果  CDN  用  HTTPS  协议回源到  OBS  桶,可能会因为  OBS  桶的  HTTPS  配置问题导致回源失败  。通常建议将**回源协议设置为  HTTP,由  CDN  节点负责  HTTPS  加密,而  CDN  与  OBS  之间走内网  HTTP,这样既能保证安全,也更稳定高效。

场景三:源站是自建  Nginx  /  Apache  服务器

    这类源站配置灵活,可以根据业务需求调整。

操作建议:

        1.    确认协议:检查源站  Web  服务器是否开启了  HTTPS  监听。如果只开启了  80  端口,回源协议必须选  HTTP;如果开启了  443  端口,建议将回源协议设置为  HTTPS,实现全链路加密。

        2.    确认回源  HOST:如果源站上配置了多个虚拟主机(ServerName),请将  回源  HOST  设置为对应站点的域名,确保  CDN  能请求到正确的站点目录  。

二、配置完成后的验证

修改配置后,可以通过以下方法验证是否生效:

1.    清除缓存:在  CDN  控制台执行“刷新”操作,强制  CDN  节点回源以获取最新内容  。

2.    直接测试:使用  `curl`  命令绕过本地缓存,模拟  CDN  回源行为。例如,你可以绑定本地  `hosts`  文件,将加速域名指向一个  CDN  节点  IP,然后执行  `curl  -v  https://你的加速域名/资源路径`,重点查看返回的响应头信息,确认是否返回了预期内容。

如果按照上述步骤操作后问题仍然存在,可能需要检查源站服务器的  SSL证书链是否完整,不完整的证书链也可能导致  CDN  回源握手失败  。