servername 必须唯一且合法,仅写一个完整域名如 example.com;serveralias 用空格分隔多个别名,支持前缀通配符;http 与 https 需分别配置;非标准端口需在 servername 和 serveralias 中明确标注端口号。

ServerName 是主域名,必须且只能写一个;ServerAlias 是它的补充,用空格列出所有其他能访问同一站点的域名。
ServerName 必须明确、唯一、合法
它不是可选项,Apache 启动时会严格校验:不写会警告,写多个、加引号、带协议(http://)、端口、IP 或通配符,都会导致配置加载失败。
- 正确写法只有一种:一行,一个完整域名,例如 ServerName example.com
- 即使你日常只用 www.example.com,也得从中选一个作 ServerName(比如 www.example.com),另一个(example.com)放进 ServerAlias
- 不能写成 ServerName "example.com" 或 ServerName example.com www.example.com
ServerAlias 用来收拢多个访问入口
它负责承接所有非主域名的请求,语法宽松但有明确规则:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 多个域名用空格分隔,不能用逗号、换行或引号,例如 ServerAlias www.example.com shop.example.com *.example.com
- 支持前缀通配符(*.example.com),能匹配 blog.example.com、api.example.com,但不匹配 dev.blog.example.com
- 不支持后缀通配(如 example.*)或中间通配(如 ex*.com)
HTTP 和 HTTPS 要分开配
80 端口和 443 端口在 Apache 中视为两个完全独立的虚拟主机,不能共用一套配置:
块里写 ServerName example.com 和对应的 ServerAlias 块里要重新写一遍 ServerName example.com 和同样内容的 ServerAlias,并配上 SSL 证书路径 - 两者域名一致,但端口、协议、证书都不可混用
本地开发多端口场景(如 XAMPP)
如果监听 8080、8081 等非标准端口,ServerName 需带端口,且与 Listen 指令严格对应:
- 在 httpd.conf 或 httpd-vhosts.conf 中先声明 Listen 8080
- 再写
,内部 ServerName localhost:8080 - ServerAlias 同样要写完整,比如 ServerAlias 127.0.0.1:8080 mysite.local:8080
- 别在 ServerName 里漏掉端口号,否则 Host 匹配会失败









