为什么我需要修改“etc\hosts”才能够打开网站?

为什么我需要修改“etc\hosts”才能够打开网站?

我的网络中有一个 Web 服务器,其 IP 为192.168.249.10。当我尝试在浏览器中使用其 IP 地址打开它时,我遇到以下结果:

网址:

在此处输入图片描述

https:

在此处输入图片描述

如上所示,我无法打开主页。但是当我修改我的etc\hosts域名以将其分配给其 IP 地址时,我就可以打开它:

主办方:

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.


192.168.249.10 xyz.abc.com

我有:

在此处输入图片描述

请注意,我xyz.abc.com只在地址栏中输入,然后它自动重定向到https并添加public/home/login

写入https://192.168.249.10/public/home/login仍然不起作用!

问题是:

  1. 为什么我需要为此分配 IP具体的主机文件中的域名?hosts除了本地替换(名称与 IP 地址)之外,该文件还有其他作用吗?
  2. 他们是怎么做到的?(网络服务器所有者)

答案1

  1. 不,该hosts文件不会做任何额外的事情 - 它只是允许您直接在计算机上解析 DNS 查询,xyz.abc.com而不是将其发送到适当的权威 DNS 服务器。您在浏览器中输入的名称或 IP 地址也会发送到 Web 服务器。Web 服务器的管理员可以查看此信息,并在您连接到 IP 地址而不是主机名时禁用访问。xyz.abc.com这样,您就可以在同一个 IP 地址上运行多个网站。

  2. 取决于所使用的 Web 服务器。每种服务器的配置方式都不同。通常,您可以使用逻辑甚至正则表达式来匹配请求中的 IP 地址、域名和资源,然后选择向客户端提供什么。要更改此行为,您需要具有 Web 服务器的管理权限。

答案2

Web 服务器可能设置为通过主机名识别虚拟主机。这意味着浏览器必须发送“host”http 标头。在您的例子中为“host: xyz.abc.com”。因此 Web 服务器知道要传送哪个站点。如果您使用名称进行连接,浏览器会执行此操作,但如果您不提供名称而是提供 ip,则当然无法执行此操作。

相关内容