servername 必须唯一且为完整域名,用作虚拟主机首要匹配依据;serveralias 支持多域名及通配符(如*.example.com),用于扩展访问入口;二者须同处一个virtualhost块内,http/https需分别配置,并确保dns、防火墙和配置语法均正确。

设置 Apache 的 ServerName 和 ServerAlias,本质是让一个虚拟主机响应多个域名请求。关键不是“能不能加”,而是“怎么加才不报错、不冲突、能生效”。
ServerName 只能有一个,且必须明确
ServerName 是这个虚拟主机的“法定名称”,Apache 用它做首要匹配依据。它只能写一个完整域名(如 example.com),不能留空,也不能写多个、不能写通配符、不能写 IP 地址(除非你真要用 IP 当主入口)。如果写成 ServerName example.com www.example.com,配置会直接加载失败。
- 推荐把最常用、最规范的域名设为
ServerName,比如不带www的主域 - 避免用泛域名(如
*.example.com)当ServerName,它只支持在ServerAlias中使用 - 如果只是本地测试,
ServerName localhost可以,但上线环境建议用真实域名
ServerAlias 承担多域名扩展职责
ServerAlias 是真正实现“一站多域”的字段。它允许你用空格分隔的方式,一次性列出所有额外可访问的域名,包括带 www 的变体、不同后缀的镜像站、甚至通配子域。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 写法示例:
ServerAlias www.example.com example.net www.example.net *.example.com - 通配符仅支持前缀形式,如
*.example.com合法,ex*.com或example.*不合法 - 别名之间不能有逗号或换行,必须用空格;跨行写需用反斜杠续行(不推荐,易出错)
- 如果某个别名已被其他
<virtualhost></virtualhost>块占用,Apache 会优先匹配第一个定义它的虚拟主机,可能造成意外交互
必须放在正确的虚拟主机块内
ServerName 和 ServerAlias 必须成对出现在同一个 <virtualhost></virtualhost> 或 <virtualhost></virtualhost> 块中,不能写在全局配置区,也不能分散在多个块里试图“拼凑”。每个站点应有独立的 <virtualhost></virtualhost> 定义。
- HTTP 和 HTTPS 需要分别配置:80 端口块写一套,443 端口块另写一套(含 SSL 相关指令)
- Apache 2.4+ 不再需要
NameVirtualHost指令;2.2 版本必须显式开启,否则多域名不生效 - 确保该虚拟主机块的
DocumentRoot指向正确目录,否则域名能解析、页面却 404
生效前必须检查三项基础前提
配置写对了,不代表马上能用。这三个环节任一缺失,都会导致域名访问失败,且错误往往不报在 Apache 日志里。
- DNS 或 hosts 文件已将所有域名解析到服务器 IP(本地调试可用
/etc/hosts添加记录) - 防火墙放行了 80 和 443 端口,
systemctl status httpd显示服务运行正常 - 执行
apachectl configtest返回Syntax OK,再systemctl reload httpd生效(不要只 restart)










