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

1 domain-name-system virtualhost apache-2.2

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

请解释我......

这是 Virtualhost 我在说 abt

<VirtualHost *:80>
  ServerName example.com
  ServerAlias example
  DocumentRoot "<*path*>"
  RailsEnv development
  <Directory "<*path*>"
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Luk*_*keR 5

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

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

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

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

使用示例虚拟主机定义。

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www/example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

虚拟主机配置中的 ServerName 指令与主机 HTTP 标头匹配。所以如果你输入

http://example.com
Run Code Online (Sandbox Code Playgroud)

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

Host: example.com
Run Code Online (Sandbox Code Playgroud)

使用它的虚拟主机定义。如果找到匹配项,它将使用列在

DocumentRoot 
Run Code Online (Sandbox Code Playgroud)

在上面的例子中

/var/www/example.com
Run Code Online (Sandbox Code Playgroud)

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

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