我只是不明白我的浏览器如何能够路由到正确的路径....当我给出虚拟主机的 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
这可以是配置中定义的索引文件,也可以是目录索引(如果允许)。
答案2
我相信它实际上是从你的操作系统存储主机名的地方获取的,Ubuntu 上的 /etc/hostname 或 RH 类型发行版下的 /etc/sysconfig/network
hostname
在安装过程中,我认为它通过运行命令来填写 ServerName