回源配置的核心不在于加速策略,而在于连接层的隐藏参数它们直接决定源站响应速度、缓存命中率和异常恢复能力。
新接手一个CDN项目时,多数人会盯着缓存规则和HTTPS证书,对回源配置往往只改个源站IP就收工,结果上线后频繁出现源站负载过高、部分区域加载缓慢、回源失败率居高不下等问题,这些症状背后,通常都是几个被忽略的回源参数在作祟。
回源HOST与SNI参数:让源站识别正确身份
回源HOST和回源SNI是两套独立配置,但很多人把它们混为一谈,回源HOST是HTTP请求头中的Host字段,源站服务器靠它来识别域名、分发对应站点,回源SNI是TLS握手时客户端提交的域名信息,用于服务器选择正确的SSL证书。
默认值带来的隐蔽问题
大多数CDN平台的默认回源HOST是当前加速域名,而不是源站实际配置的站点域名,假设你的源站同时托管着www.a.com和img.a.com两个站点,CDN加速域名是img.a.com,回源地址写的是源站IP,此时回源HOST若默认继承img.a.com,通常没问题,但如果加速域名是cdn.a.com,而源站根本没有这个站点的配置,源站就可能返回默认站点内容或直接报404。
排查这类问题有个快捷方法:在源站执行curl -H "Host: cdn.a.com" http://127.0.0.1,看返回的是否为目标站点内容,不是的话,就需要把回源HOST改成源站实际站点域名。
回源协议选择的联动效应
回源协议(HTTP或HTTPS)与回源SNI的配置必须配套,选择HTTPS回源时,回源SNI默认取加速域名,若源站证书绑定的域名与之不符,握手就会失败,部分CDN厂商支持关闭回源SNI或自定义SNI值,修改后源站就能正常建立TLS连接。
实际操作中,建议为源站准备一张覆盖所有所需域名的SSL证书,并处理好证书链完整性,否则回源链路可以通,但源站日志里全是TLS告警,异常处理时容易产生误导。
回源超时参数:连接池的生死线
回源超时设置直接决定源站在高负载下是快速恢复还是雪崩,CDN回源超时通常分三类:

连接超时、读取超时和写超时,连接超时是TCP建连耗时上限,读取超时是等待源站响应数据的最大间隔,写超时则是发送请求体的时限。
设置多少数值比较合理
行业共识认为,连接超时设置在5到10秒之间比较稳妥,设为2到3秒,源站瞬间抖动就会大量回源失败;设为30秒以上,源站故障时CDN节点会长时间占用连接资源,大量堆积的请求最终拖垮源站。
读取超时按业务内容动态调:动态API接口建议10秒左右,静态文件可以放宽到20秒以上,源站是PHP或Java应用且数据库查询较重时,读取超时设短了反而引发连锁重试,加重源站压力。
忽略重试因子引发的雪崩
不少人在CDN控制台里看到“重试次数”选项,默认值是0或1,就不去动它,源站短暂故障时,CDN节点直接返回5xx给用户,用户体验很差,把重试次数调到2次,并勾选“重试不等待”,节点会迅速换一个IP或端口重试,注意别把重试次数设太高源站持续故障时,过多重试会放大请求量,效果适得其反。
设置路径一般是:CDN控制台 -> 回源配置 -> 回源超时 -> 自定义参数,不同云厂商的字段名略有差异,简米云叫“回源超时时间”,酷番云叫“源站超时配置”,都在回源配置模块内。
回源跟随重定向与Range回源:两个不起眼的开关
回源跟随重定向的默认状态是关闭的,源站返回301或302时,CDN节点默认直接将重定向响应透传给用户,不会自动跟随,这会导致两个后果:一是用户浏览器多一次跳转,体验变差;二是有缓存需求的静态资源永远缓存不了每次回源都拿到302,CDN不会缓存跳转响应。
开启跟随重定向的代价
开启“跟随重定向”或“回源跟随302”后,CDN节点会带着同一请求头继续访问源站返回的新地址,这里有个代价:源站若配置了重定向到CDN自身域名的规则,就会形成回源环路,调整重定向规则前,先确认源站没有配置类似

rewrite ^/(.)$ https://cdn.example.com/$1 permanent的规则,不少站点启用HTTPS后习惯性地把HTTP请求全部301到HTTPS,此时回源跟随重定向开启,就要保证源站本身能正确处理HTTPS回源。
Range回源提升大文件分发效率
Range回源的含义是CDN节点向源站请求资源时,只请求分片所需的那一段字节范围,而不是整个文件,默认情况下这个参数是关闭的,意味着首次回源拉取大文件时,源站需要把整个文件发给节点,再进行分片缓存,100MB的视频文件,10个节点同时回源,源站就要吐出1GB流量。
开启Range回源后,每个节点只请求自己缺失的那一段,源站流出量大幅减少,比较推荐的做法是:对大于10MB的文件或整个目录开启Range回源,同时把分片大小设为2MB或4MB,源站日志里若出现大量HTTP/1.1 200 OK且无Content-Range头的记录,说明Range没有生效,需要检查源站是否支持Range请求。
分区域回源与主备回源:动态容灾的关键
分区域回源允许让不同地理区域的用户访问不同的源站,这对全国多机房部署的业务很有价值,华东用户回源到华东机房,华南用户回源到华南机房,延迟能降低一个档次。
主备配置避免割接掉链子
主备回源是更基础的容灾设置,配置的时候容易忽略两点:
- 备源站的健康检查方式,默认是TCP探测,只检查端口是否可达,源站进程挂掉但端口还开着(如Java进程卡死)时,TCP探测不会触发切换,建议改成HTTP探测,配置一个简单的探活路径
/health-check,源站返回200才视为健康。 - 主备切换的触发条件,多数平台的默认条件是连续N次连接失败就切换,这个N的默认值偏大(如10次),意味着源站故障后用户已经吃到多次5xx才完成切换,把连续失败次数下调到3到5次,同时开启“自动回切”,源站恢复后流量能自动回来。
分区域回源的灰度意义
分区域回源不只是性能优化手段,还能当作灰度发布通道,比如先让华东用户访问新源站,观察一天稳定后再放量到全国,配置时注意源站选择的自定义权重,权重为0的源站不会接流量,但仍参与健康检查,作为备源随时待命。

设置方法:CDN控制台 -> 回源配置 -> 节点回源 -> 分区域回源,按地区勾选源站,多源站场景下,每个源站的权重和优先级要分别设置,网宿和又拍云的配置界面里,这个功能叫“智能调度”或“区域运营商线路回源”,本质是一样的。
回源配置看起来是CDN中最基础的部分,却藏着影响源站稳定性和用户体验的关键开关,实操中注意这几点:回源HOST按源站真实站点配置而非加速域名、超时参数根据业务动态调整、重定向和Range回源按场景合理开启、分区域主备配合健康检查兜底,把这些参数逐个过一遍,很多回源问题会在源站日志中自然消失。
关于回源配置的常见疑问
回源失败次数过高是什么原因造成的?
多数情况是回源HOST不匹配或源站防火墙拦截了CDN节点的IP段,先看源站日志中是否有对应的请求记录,有记录则检查返回状态码;没记录再检查安全组策略,放行所有CDN节点IP,极少情况下是运营商链路问题,可用dig命令查看CDN节点解析出的IP,再telnet到源站8080端口测试连通性。
HTTPS回源时源站证书过期会影响用户访问吗?
会影响,回源SSL证书过期后,CDN节点与源站的TLS握手失败,节点会将错误码透传给用户,表现为浏览器直接报502或525错误,提前在证书到期前一个月更换源站证书,并确保证书链完整,加速域名的证书过期影响的是用户侧访问,两套证书需要分开管理。
配置了主备回源,为什么故障时没有自动切换?
先确认健康检查方式是TCP还是HTTP,若是TCP探测,检查源站防火墙是否屏蔽了CDN健康检查IP,若换成了HTTP探测,确认探活路径返回的是2xx状态码,有些源站未登录会302跳转登录页,健康检查会判定异常导致频繁切换,最后看看切换阈值调的是否过高,连续失败次数超过阈值后才会真正触发主备切换。