servername 是 apache 用于标识自身身份的静态字符串,必须为完整可解析域名或 ip 加端口(如 example.com:80),且端口须与 listen 一致;全局配置在顶层影响重定向和兜底行为,虚拟主机内则是 host 头精确匹配的首要依据,每个 virtualhost 块中必须有且仅有一个合法 fqdn 形式的 servername,配合同块内的 serveralias 收拢别名,二者缺一不可。

ServerName 是 Apache 用来标识自己身份的静态字符串,不是功能开关,也不是运行模型控制项。它必须写成完整、可解析的域名或 IP 加端口的形式,且端口要和 Listen 指令一致,否则匹配失败或启动警告。
主配置里的 ServerName(全局默认)
写在 httpd.conf 或 apache2.conf 的顶层(不在任何
- 格式必须是:ServerName 域名:端口 或 ServerName IP地址:端口,例如:
ServerName example.com:80或ServerName 192.168.1.100:443 - 不能留空,不能写多个,不能加引号、协议(如 http://)、通配符(*)或空格
- 本地开发常用:
ServerName localhost:80,前提是已配置Listen 80 - 生产环境推荐用真实注册域名,避免使用裸 IP(除非无 DNS 条件)
虚拟主机里的 ServerName(核心匹配依据)
每个
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 只写域名,不带协议和端口,例如:
ServerName blog.example.com - 必须是完整、合法的 FQDN(全限定域名),不能是
www.blog或blog - 若监听非标端口(如 8080),浏览器发来的 Host 头含端口(
localhost:8080),此时 ServerName 也得写成localhost:8080才能匹配 - HTTP 和 HTTPS 虚拟主机需分别配置,各自块内的 ServerName 必须与对应端口(80 / 443)及证书信息一致
ServerAlias 怎么配合 ServerName 使用
ServerAlias 不是替代 ServerName,而是扩展它的“名片”——它收拢所有其他能访问同一站点的域名,但不参与优先级匹配。
- 必须和 ServerName 在同一个
块里,用空格分隔多个值,例如: ServerAlias www.example.com example.net *.example.com - 支持前缀通配符(
*.example.com),但不支持后缀或中间通配(如ex*.com无效) - 别名之间不能换行,不能加引号,也不能混入 IP 地址
- 如果只用一个域名上线,仍需选一个作 ServerName,其余全放 ServerAlias
常见错误和避坑提醒
ServerName 看似简单,但写错会导致 404、跳转错乱、启动卡顿甚至服务拒启。
- 不要在 ServerName 中尝试变量、环境引用(如
${HOST})或条件逻辑——Apache 不支持,直接报错 - 别把 ServerName 和 Host 头混淆:它是配置端声明值,不是从请求中读取的;匹配靠字符串完全相等
- 修改后务必执行
apachectl configtest或a2ensite后重启,避免语法错误导致服务中断 - 遇到 AH00558 警告(“无法可靠确定 FQDN”),说明全局 ServerName 缺失或无效,补上即可消除










