DNS 服务器如何知道从 httpd.conf 中获取 ServerName,尽管它没有在“/etc/hosts”中配置

DNS 服务器如何知道从 httpd.conf 中获取 ServerName,尽管它没有在“/etc/hosts”中配置

我只是不明白我的浏览器如何能够路由到正确的路径....当我给出虚拟主机的 ServerName 时....即使它没有在“/etc/hosts”中配置

请解释一下.....

我正在谈论的就是 Virtualhost

<VirtualHost *:80>
  ServerName example.com
  ServerAlias example
  DocumentRoot "<*path*>"
  RailsEnv development
  <Directory "<*path*>"
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

答案1

DNS 服务器未从 httpd.conf 中获取 ServerName

您的浏览器不会路由请求,Web 服务器会根据浏览器发送的主机 HTTP 标头返回正确的页面。

当您在浏览器中输入 URL 并按回车键时,名称将使用 DNS 解析为 IP,然后浏览器向 DNS 查询返回的 IP 发送 HTTP 请求。

HTTP 标头构成 HTTP 请求的核心。其中之一是您在浏览器中输入的主机或域名。

使用示例虚拟主机定义。

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www/example.com
</VirtualHost>

虚拟主机配置中的 ServerName 指令与 Host HTTP 标头匹配。因此,如果您输入

http://example.com

Apache 将接收请求并尝试匹配 Host 标头

Host: example.com

及其虚拟主机定义。如果找到匹配项,它将使用

DocumentRoot 

在上面的例子中

/var/www/example.com

这可以是配置中定义的索引文件,也可以是目录索引(如果允许)。

http://en.wikipedia.org/wiki/Virtual_hosting#Name-based

答案2

我相信它实际上是从你的操作系统存储主机名的地方获取的,Ubuntu 上的 /etc/hostname 或 RH 类型发行版下的 /etc/sysconfig/network

hostname在安装过程中,我认为它通过运行命令来填写 ServerName

相关内容