ServerName 指令
描述: | 服务器用来标识自己的主机名和端口 |
---|---|
句法: | ServerName[scheme://]domain-name|ip-address[:port] |
内容: | 服务器配置,虚拟主机 |
状态: | 核心 |
模组: | 核心 |
该ServerName
指令设置服务器用来标识自身的请求方案,主机名和端口。
ServerName
使用基于名称ServerAlias
的虚拟主机时,用于(可能与结合使用)唯一标识虚拟主机。
此外,当UseCanonicalName
设置为非默认值时创建自引用重定向URL时将使用此选项。
例如,如果托管Web服务器的计算机的名称为simple.example.com
,但该计算机也具有DNS别名,www.example.com
并且您希望如此标识Web服务器,则应使用以下指令:
ServerName www.example.com
该ServerName
指令可以出现在服务器定义内的任何位置。但是,每个外观都会覆盖先前的外观(在该服务器内)。
如果未ServerName
指定,服务器首先尝试向操作系统询问系统主机名,以推断出客户端可见的主机名,如果失败,则对系统上存在的IP地址执行反向查找。
如果没有在中指定端口ServerName
,则服务器将使用传入请求中的端口。为了获得最佳的可靠性和可预测性,您应该使用ServerName
指令指定一个明确的主机名和端口。
如果您使用的是基于名称的虚拟主机,则ServerName
内部<VirtualHost>
部分指定必须在请求Host:
标头中出现的主机名才能匹配该虚拟主机。
有时,服务器在运行SSL的设备(例如反向代理,负载平衡器或SSL卸载设备)后面运行。在这种情况下,请https://
在ServerName
指令中指定客户端连接到的方案和端口号,以确保服务器生成正确的自引用URL。
看到的说明UseCanonicalName
和UseCanonicalPhysicalPort
指令,其用于确定自引用的URL(例如,通过是否设置mod_dir
模块)将是指指定的端口,或在客户端的请求给定的端口号。
如果未设置
ServerName
服务器可以解析为IP地址的名称,则会导致启动警告。httpd
然后,将使用系统hostname
命令使用它可以确定的任何主机名。这几乎永远不会是您真正想要的主机名。httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName
参见
- 有关DNS和Apache HTTP Server的问题
- Apache HTTP Server虚拟主机文档
UseCanonicalName
UseCanonicalPhysicalPort
ServerAlias