![“apache2ctl -S”命令的输出中 namevhost 是如何得出的?](https://linux22.com/image/744101/%E2%80%9Capache2ctl%20-S%E2%80%9D%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E4%B8%AD%20namevhost%20%E6%98%AF%E5%A6%82%E4%BD%95%E5%BE%97%E5%87%BA%E7%9A%84%EF%BC%9F.png)
当我apache2ctl -S
在我的服务器上运行时,我通常会为服务器上的每个网站获得类似这样的信息:
port * namevhost www.websitedomain.org (/etc/apache2/sites-enabled/websitedomain.conf:29)
请注意,后面的字符串namevhost
与网站的域名匹配。
但是,服务器上有几十个网站报告了 Web 服务器的主机名,后跟设置的域名namevhost
,如下所示:
port * namevhost server_hostname.server_domain_name.com (/etc/apache2/sites-enabled/anotherwebsitedomain.conf:29)
我试图弄清楚为什么这些网站显示的server_hostname.server_domain_name.com
是namevhost
而不是通常的内容www.anotherwebstiedomain.com
。
server_hostname.server_domain_name.com
我已经搜索过 apache 配置文件,但配置中没有找到这个字符串。那么这个字符串可能namevhost
来自哪里呢?
答案1
从 Apache 2.4基于名称的虚拟主机支持文档:
如果您
ServerName
从任何基于名称的虚拟主机中省略该指令,服务器将默认使用从系统主机名派生的完全限定域名 (FQDN)。这种隐式设置的服务器名称可能会导致违反直觉的虚拟主机匹配,因此不建议这样做。
如何做到这一点在ServerName
指示:
如果没有
ServerName
指定,服务器将尝试通过首先向操作系统询问系统主机名来推断客户端可见的主机名,如果失败,则对系统上存在的 IP 地址执行反向查找。
这就是您看到的主机名的来源。
答案2
显示的域server_hostname.server_domain.com
没有ServerName
设置 apache 指令。