一个块中,servername定唯一主域名,serveralias用空格分隔多个别名及*.example.com通配符;http与https需分别配置且serveralias各自重复声明,同时确保dns解析、无别名冲突、apache版本适配(2.2需namevirtualhost,2.4+默认启用)。

Apache 用 ServerAlias 绑定多个域名,核心就一句话:一个 <virtualhost></virtualhost> 块里,ServerName 定主域名(只能一个),ServerAlias 列其余所有别名(空格分隔,支持 *.example.com 这类前缀通配符)。
ServerName 和 ServerAlias 必须各司其职
ServerName 是“第一匹配项”,必须写且只能写一个完整域名(如 example.com)。它不是可选项,也不是占位符——缺了会警告,写多个直接报错启动失败。
ServerAlias 才是多域名的关键载体,可写任意多个,用空格隔开:
ServerAlias www.example.com example.net www.example.net- 支持通配符:
ServerAlias *.example.com blog.example.org(注意:只认*.domain.tld,不支持ex*.com或example.*) - 错误示范:
ServerName example.com www.example.com→ 语法错误,Apache 拒绝启动
HTTP 和 HTTPS 必须分开配,ServerAlias 各自写一遍
端口 80 和 443 在 Apache 中是两个完全独立的虚拟主机上下文。哪怕内容一模一样,也不能复用配置。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
漏配 HTTPS 的 ServerAlias,会导致访问 https://www.example.com 时匹配失败,可能跳到默认站点或返回 404/503。
正确做法是两套独立块:
- HTTP 块:
<virtualhost> ServerName example.com ServerAlias www.example.com example.net </virtualhost> - HTTPS 块:
<virtualhost> ServerName example.com ServerAlias www.example.com example.net SSLEngine on ... </virtualhost>
生效前必须确认的三件事
语法对 ≠ 能用。以下三点任一缺失,ServerAlias 都不会响应请求:
-
DNS 解析到位:每个要绑定的域名(含
www、二级域、通配子域)都必须有 A 记录指向服务器真实 IP;本地测试可用/etc/hosts临时模拟 -
避免别名冲突:如果两个
<virtualhost></virtualhost>块都写了ServerAlias example.com,Apache 只认配置文件中先出现的那个,后一个静默失效 -
Apache 版本适配:Apache 2.2 及更早版本需显式开启
NameVirtualHost *:80(端口必须和<virtualhost></virtualhost>一致);2.4+ 已默认启用,该指令可省略
怎么验证是否真的绑成功了?
别靠浏览器刷新猜,用日志看真实匹配结果:
- 在对应
<virtualhost></virtualhost>块内加一行:LogLevel info - 重启 Apache,访问目标域名(如
curl -H "Host: www.example.com" http://your-server-ip) - 查
error.log,搜索VHOST,看到类似:
[info] [client 192.168.1.100] VHOST: Matched servername 'www.example.com' for host header 'www.example.com'
说明已精准路由到该虚拟主机










