servername 是 apache 的服务身份标识指令,用于定义服务器对外宣称的主机名和端口,直接影响重定向url生成、host头匹配、虚拟主机路由及启动行为;它不决定运行模型,而是告诉apache“我是谁”,必须为完整域名或可解析ip加端口,且端口需与listen指令一致。

ServerName 在 Apache 主配置文件中不是“工作模型”,而是服务身份标识指令——它不决定 Apache 怎么运行(那是 MPM 模块、线程/进程模型的事),而是告诉 Apache “我是谁”,直接影响重定向生成、Host 头匹配、虚拟主机路由和启动行为。
ServerName 的核心作用
它定义服务器对外宣称的主机名和端口,用于:
- 生成 301/302 重定向 URL(比如 mod_rewrite 或 Directory 指令触发跳转时)
- 匹配 HTTP 请求中的 Host 头(尤其在基于名称的虚拟主机中)
- 避免 Apache 启动时做反向 DNS 查询(不设或设错会导致启动卡顿)
- 作为默认虚拟主机的兜底识别依据(当请求 Host 不匹配任何 VirtualHost 时)
主配置中 ServerName 的典型写法
写在 全局上下文(即不在任何
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
ServerName 域名:端口(如 ServerName example.com:80)或 IP:端口(如 ServerName 192.168.1.100:443)
- 必须是完整域名或可解析的 IP,不能留空、不能写多个、不能用通配符
- 端口需与
Listen指令一致(例如 Listen 80 → ServerName xxx:80;Listen 443 → ServerName xxx:443) - 本地开发常用
ServerName localhost:80,配合Listen 80 - 生产环境推荐用真实域名,如
ServerName www.example.com:80
和虚拟主机的关系
主配置里的 ServerName 是“全局默认”,只在没有匹配到任何 VirtualHost 时起作用。真正决定网站响应逻辑的是
- 每个
块必须有且仅有一个 ServerName(如 ServerName blog.example.com) - 可配合 ServerAlias 添加别名(如
ServerAlias example.com *.example.com) - HTTP 和 HTTPS 虚拟主机需分别配置,端口、证书、ServerName 都要对应
配置后必须验证的三件事
改完别急着重启,先确认:
- 运行
httpd -t(Linux/macOS)或apache -t(Windows WAMP)检查语法是否正确 - 确保系统 hosts 文件或 DNS 能将所设域名解析到本机 IP(调试时常用
127.0.0.1 blog.example.com) - 启动后访问
http://localhost/server-status(需启用 mod_status),看顶部显示的 ServerName 是否与配置一致










