回源 Host 与 SNI 是什么
回源 Host 决定 CDN 回源请求头里的 Host 字段,源站据此把请求路由到对应的虚拟主机;如果回源走 HTTPS,还要按回源域名发送 SNI,用于匹配源站证书。源站上挂多个域名或按 Host 分站时,这两项配错的典型表现就是 403 或 404——请求确实到了源站,但被路由到默认站点或直接拒绝,而 CDN 侧的配置看起来完全正常。
基本信息
| 默认值 | 多数产品默认以加速域名或源站配置作为回源 Host |
|---|---|
| 适用 | 源站按 Host 区分站点时必须显式设置 |
| SNI | HTTPS 回源按回源域名发送 SNI,与源站证书匹配 |
| 验证 | 直连源站带上该 Host 头复现问题 |
典型使用场景
- 源站用 Nginx 虚拟主机区分多个站点,回源必须带正确 Host
- 源站走 HTTPS 且证书只覆盖特定域名,SNI 配错会握手失败
- 多域名共用一套源站,按 Host 分流到不同应用
- 排查 403 或 404 时,用 Host 头直连源站复现以确认归属
用 Host 头直连源站复现
用 Host 头直连源站复现
curl -sv -H 'Host: origin.example.com' https://203.0.113.10/healthz \
-o /dev/null 2>&1 | grep -E 'subject|HTTP/'
# 换一个错误的 Host 再试一次,对比返回码差异现象与原因
| 现象 | 可能原因 |
|---|---|
| 源站直连正常、经 CDN 报 404 | 回源 Host 未按源站站点设置 |
| HTTPS 回源握手失败 | SNI 与源站证书域名不匹配 |
| 返回其他站点内容 | 落到源站默认虚拟主机 |
| 仅部分域名异常 | 多个加速域名的回源配置不一致 |
回源 Host 与回源 SNI 可分开配置的产品里,两者不一致会造成证书校验失败(HTTPS 握手报错)。
多域名接入时怎么管
当同一个源站被多个加速域名回源时,最容易出现的是配置不一致:新接入的域名沿用默认 Host,测试环境验证没问题,上线后才在源站日志里看到大量落到默认站点的请求。建议把每个加速域名的回源 Host、回源协议、回源端口整理成一张对照表,新增域名时按表填写并做一次直连复现验证;源站侧也可以在默认站点上配置一个明显的拒绝或跳转,让配置错误的请求更容易被识别出来,而不是静默返回错误内容。