Apache通过ServerName(唯一主域名)和ServerAlias(支持多域名及通配符)协同实现多域名与泛解析;ServerAlias中用空格分隔精确域名,如www.example.com example.com,泛解析写为.example.com并需DNS配合。
apache 通过 servername 和 serveralias 协同工作,实现一个虚拟主机响应多个具体域名(精确匹配),也能覆盖任意子域名(泛解析)。关键在于理解两者的分工:servername 是主标识,仅允许一个值;serveralias 才是承载多域名和通配符的正确位置。
精确匹配多个域名:用空格分隔 ServerAlias
当网站需同时响应 www.example.com、example.com、shop.example.com 等明确域名时,全部写在 ServerAlias 行,用空格隔开。ServerName 保留一个作为“首选名”,通常选带 www 的或裸域。
- ServerName 必须且只能写一个域名,语法错误会直接导致 Apache 启动失败
- ServerAlias 支持无限多个域名,不区分 www/非www、二级/三级,只要 DNS 解析到该服务器 IP 就生效
- 所有域名共用同一 DocumentRoot 和配置,无需重复定义虚拟主机
启用泛域名解析:用 * 号通配子域名
要让 any1.example.com、test.example.com、api.example.com 全部指向同一个站点,只需在 ServerAlias 中加入 *.example.com。注意星号必须紧贴点号,不能有空格。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 泛解析只匹配一级子域名,如 *.example.com 不包含 example.com 本身,所以建议同时写上裸域:ServerAlias example.com *.example.com
- 支持多级泛化,例如 *.dev.example.com 可匹配 staging.dev.example.com 或 api.dev.example.com
- DNS 层也需配置 A 记录指向服务器 IP,记录主机名为 *(不是文字星号,而是 DNS 控制台里的“泛解析”选项)
配置示例与注意事项
以下是一个典型配置片段,监听 80 端口,同时支持裸域、www、任意二级子域:
<VirtualHost *:80><br> ServerName example.com<br> ServerAlias www.example.com *.example.com<br> DocumentRoot /var/www/example<br> <Directory "/var/www/example"><br> Require all granted<br> </Directory><br></VirtualHost>
- ServerName 写 example.com,不是 www.example.com——否则裸域访问可能被其他虚拟主机捕获
- 重启 Apache 前务必运行 apachectl configtest 验证语法,避免服务中断
- 若使用 HTTPS,需为每个实际使用的域名(尤其是泛解析下的子域名)准备有效 SSL 证书,Let’s Encrypt 的 wildcard 证书可满足 *.example.com 场景

















