在IIS或Apache中为同一IP和端口的多个网站指定不同的域名,让服务器根据HTTP请求中的Host字段自动分流到对应站点,一句话总结就是“一IP多站点的域名分流钥匙”。
下面从配置原理、实操步骤、常见故障到进阶技巧,完整拆解这套在网站部署中绕不开的基础操作。
为什么要看重主机头配置
主机头是HTTP/1.1协议规定的标准字段,长达二十余年的浏览器和服务器都原生支持,不存在兼容性障碍,它的核心价值在于解决IP地址枯竭时代的矛盾有限的IPv4地址要承载无限增长的网站数量,靠的就是让一台服务器上的多个站点共用同一个IP和端口,通过域名来区分彼此。
什么场景下必须配置主机头
- 虚拟主机用户:同一台服务器托管数十个客户网站,每个域名对应独立站点
- 企业多业务部署:公司官网、OA系统、邮件入口共用一台服务器,各绑一个域名
- 开发测试环境:本机模拟多个域名指向不同项目,避免频繁修改hosts文件
- HTTPS证书更新:多域名共用服务器时,主机头配合SNI实现单IP多证书
一个常见的误解是“配置了主机头就可以完全省略端口设置”,主机头只解决域名到站点的映射,端口仍然必须先确定,如果一个站点占用8080端口,另一个用80端口,即使域名完全不同,也仍然需要明确区分访问路径(例如http://domain2.com:8080)。
主机头配置三步走
掌握主机头配置的关键在于理解IIS的管理界面逻辑,一旦理解了“先建站点、再绑域名、后调优先级”的顺序,后面的步骤就顺理成章了。
第一步:理解主机头在IIS中的位置
IIS管理器里,每个网站的“绑定”窗口是主机头的管理入口,关键概念是IP地址、端口、主机名三要素组合,默认情况下IIS会自动填充“所有未分配的IP”和端口80,主机名留空此时该站点会响应服务器上所有指向80端口的未知名请求。
第二步:配置IIS主机头的完整步骤
假设你的服务器IP是0.113.5,需要部署www.example.com和

m.example.com两个站点:
- 打开IIS管理器,右键“网站”选择“添加网站”
- 站点名称填写
example-web,物理路径指向站点文件目录 - 绑定类型选择http,IP地址填写
0.113.5,端口填写80 - 主机名填写
www.example.com,这是最关键的一步 - 点击“确定”完成第一个站点绑定
- 重复上述步骤,将第二个站点的物理路径指向移动端模板目录,主机名填写
m.example.com
完成之后,在浏览器分别输入两个域名,就能看到各自对应的站点内容。IIS7以上版本支持同一站点添加多条绑定记录,意味着www.example.com和example.com(不带www)可以指向同一站点,只需要在绑定窗口中点击“添加”再次填入不同主机名。
第三步:IIS主机头配置中端口和域名的关系
主机头的工作依赖端口服务器在接收到数据包时,需要先根据IP和端口找到对应的“监听列表”,再根据Host字段匹配具体站点。
常见疑问:90端口可以做主机头吗?
可以,绑定端口改成90,服务器会在该端口上监听主机头信息,访问时需要加上端口号,在实际部署中,如果使用非标端口,防火墙策略需要额外放行,否则外部无法访问,IIS中的缓存机制可能导致端口更换后无法立即生效,此时需要重启W3SVC服务:
net stop W3SVC && net start W3SVC
主机头配置出错的排查思路
主机头配置的故障大多集中在域名解析、绑定冲突和缓存残留三大类,当问题出现时,建议按以下顺序排查。
域名解析正常但访问报404
用域名访问时出现404,但直接用IP能访问,说明站点绑定存在优先级冲突,如果服务器上有一个主机名为空(或不匹配)的默认站点,它会拦截所有未匹配主机头的请求,检查方案如下:
- 查看是否存有“默认网站”且处于启动状态
- 确认目标站点的主机名是否与访问域名完全一致(含大小写,建议统一小写)
- 在命令行执行
nslookup www.example.com检查解析是否指向本机IP
IIS主机头配置后HTTPS无法访问

HTTP和HTTPS的主机头配置在IIS中是独立的,配置https时,需要在站点绑定的类型下拉菜单中选择https,再选择对应的SSL证书,很多人只配了HTTP没配HTTPS,自然无法访问。
对于多域名HTTPS场景,IIS8以上版本支持SNI(服务器名称指示)功能,勾选“需要服务器名称指示”后,每个绑定都可以对应独立证书,这解决了单IP多HTTPS站点的历史痛点。
Apache环境下的主机头配置
Apache中对应的配置是虚拟主机(VirtualHost),在httpd.conf或conf.d目录下添加配置块即可:
<VirtualHost :80>
ServerName www.example.com
DocumentRoot /var/www/example
</VirtualHost>
Apache里最容易犯的错误是同时包含默认VirtualHost和匹配主机头的VirtualHost时,默认站点优先级意外覆盖,对此,业内专家指出,Apache会优先匹配ServerName最精确的VirtualHost,但老版本对通配符的处理逻辑会带来额外干扰,升级到2.4.8以上可规避多数已知问题。
主机头配置的高级应用场景
掌握了基础配置后,实际运维中还会遇到一些特殊需求,需要灵活扩展主机头的使用方式。
通配符主机头与泛解析
IIS支持在主机名中使用星号通配符,例如在绑定窗口的主机名中填入.example.com,该站点就能响应blog.example.com、shop.example.com等任何三级域名,这个能力对于多租户SaaS系统非常重要用户注册时自动分配独立的二级域名,无需为每个用户手动添加站点绑定。
需要注意的是,IIS中的通配符匹配仅支持一个星号且必须在最左侧,Apache的规则更灵活,但过度使用通配符会显著降低匹配效率,造成请求响应延迟上升。
一个端口多个主机头的极限
单个端口上可以绑定的主机头数量,理论上是无限的,但实践中受到两个约束:
| 约束因素 | 影响程度 | 说明 |
|---|---|---|
| 性能开销 | 中 | 每个请求需要遍历所有绑定规则,数量过多时CPU占用上升 |
| 证书数量 | 高 | 非SNI场景下,一个IP:端口组合只能绑定一张证书 |
| 管理复杂度 | 中 | 绑定条目太多,定位问题难度增加 |
对于多数场景,80端口上的绑定数量控制在50条以内运维负担较轻,超过这个量级时优先规划独立IP或负载均衡。
端口复用和主机头配置的取舍
很多新手容易混淆的一个概念是:能不能用不同的端口替代主机头来实现多站点隔离?例如站点A用8080,站点B用8081,理论上可行,但实际上给用户带来了记忆负担普通人记不住带端口的网址,而且部分防火墙默认不放行非标端口,行业共识认为,以端口做站点隔离是过渡方案,主机头才是标准解法,尤其面向公网提供服务的站点,应优先保证URL简洁。
主机头配置常见问题解答
Q1:主机头配置会导致原有网站无法访问吗?
新增绑定时不会影响现有站点。只有当两个站点的主机名完全相同时才会发生冲突,IIS会阻止第二个同类型绑定,如果之前的主机名为空,新配置主机头后,原IP直访仍由该站点响应,优先级顺序是“非空主机名 > 空主机名”,若空主机名站点已删除则IP直访会失败,属于正常现象。
Q2:主机头配置和域名解析有关系吗?
有,而且关系密切,配置主机头相当于在服务器上设置了“门牌”,但用户访问的前提是域名已经解析到这台服务器的IP,如果你配置了主机头但域名还指向其他IP,访问请求根本到不了你的服务器,可以通过简米云、酷番云等域名服务商的DNS解析面板,将域名解析记录指向服务器公网IP,解析生效期间存在缓存延迟,一般国内解析在几分钟到几小时内完成,国外节点可能需要24小时。
Q3:换服务器后主机头配置会丢吗?
会,主机头配置是服务器级配置而不是代码级配置,存储在IIS的applicationHost.config文件或Apache的httpd.conf文件中,迁移服务器时需要在新环境重新配置,或直接复制配置文件覆盖(注意路径差异),建议在服务器文档中记录完整的绑定清单,避免遗漏导致站点无法访问。

