servername只能指定一个主域名,必须唯一且精确;serveralias用空格分隔多个别名或通配符(如*.example.com),二者同处一个virtualhost块内,http与https需分别配置。

ServerName 本身不能绑定多个域名,它只接受一个精确值,作为该虚拟主机的主标识。要让一个虚拟主机响应多个域名,必须配合 ServerAlias 使用。
ServerName 和 ServerAlias 的分工
ServerName 是必需项,只能写一个真实可解析的主域名;ServerAlias 是可选项,用于声明额外的合法别名,支持空格分隔的多个域名,也支持通配符(如 *.example.com)。
- ServerName example.com —— 必须且唯一,不能写成 example.com www.example.com
- ServerAlias www.example.com example.net test.example.com —— 多个域名用空格隔开
- ServerAlias *.demo.example.com —— 匹配 demo.example.com 下所有子域名
正确配置示例
以下是一个标准的
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<virtualhost><br> DocumentRoot "/var/www/example"<br> ServerName example.com<br> ServerAlias www.example.com example.net<br><directory><br> Require all granted<br></directory><br></virtualhost>
注意:ServerAlias 不区分大小写,但不支持正则表达式;所有域名需在 DNS 或 hosts 文件中能正确解析(如本地测试时,在 /etc/hosts 或 C:\Windows\System32\drivers\etc\hosts 中添加对应条目)。
常见错误与规避方式
把多个域名塞进 ServerName 是最典型的语法错误,会导致 Apache 启动失败。
- ❌ 错误:ServerName example.com www.example.com
- ✅ 正确:ServerName example.com + ServerAlias www.example.com example.net
- Apache 匹配顺序是:先比对 ServerName,再逐个检查 ServerAlias 列表,只要任意一项匹配即生效
多站点 vs 单站点多域名
如果目标是让不同域名指向不同网站(比如 example.com 和 demo.org 各自独立),应分别定义独立的
- 单站点多域名 → 用 ServerName + ServerAlias 在同一个
内实现 - 多站点独立运行 → 每个
块设不同 ServerName,指向不同 DocumentRoot










