回源与 Host
回源 Host 头:为什么有的站点必须配
回源有两个概念要分清:
- 回源地址(host):连到哪台机器。
- 回源 Host 头(host_header):要这台机器上的哪个站。
边缘回源时会向源站发 HTTP 请求,源站靠请求里的 Host 头决定返回哪个站点。
默认行为:
站点未配置「Host 头」时,边缘会用回源地址作为 Host 头。
这带来两种结果:
1. 独占型源站(一台机器一个站):无论 Host 是什么都返回同一个站,默认行为正确,无需配置。
2. 共享型源站(一台机器挂多个站,按 Host 区分):Host 传错会命中默认页或别的站,必须显式配置 Host 头。
哪些情况必须配 Host 头:
- 回源地址是 IP,且该 IP 是共享服务器(如多站共用的 kangle/nginx)。
- 源站按域名区分虚拟主机,而回源 IP 上没有绑定加速域名。
哪些情况通常不用配:
- 回源地址本身就是域名(默认会把该域名当 Host 发出)。
- 独占 IP 的单站源站。
真实案例:
某站点加速域名 idc.00xm.top,回源 IP 45.205.31.56 是共享 kangle,按 Host 区分站点:
- Host: idc.00xm.top 返回正确站点(安信云)。
- Host: 45.205.31.56 命中源站默认「站点未配置」页。
由于该站点未配 Host 头,边缘回退用 IP 当 Host,导致访问加速域名时一直是「站点未配置」。把「Host 头」填为 idc.00xm.top 后即恢复正常。
结论:回源地址决定「连哪台机器」,Host 头决定「要哪台机器上的哪个站」。共享源站场景务必配置 Host 头。