为什么其他计算机无法访问 127.0.0.1 上的我的 Web 服务器?

为什么其他计算机无法访问 127.0.0.1 上的我的 Web 服务器?

我正在尝试在办公室的一台机器上设置虚拟主机,我已经添加了

127.0.0.1 urs.local

到 hosts 文件,

并将其添加到配置中

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
ServerName localhost 
</VirtualHost> 

<VirtualHost 127.0.0.1:80>
DocumentRoot "/Applications/MAMP/htdocs" 
ServerName urs.local
</VirtualHost>

在同一台机器上,我输入urs.local浏览器地址栏,它就可以工作了。

但是,然后我转到同一网络上、同一防火墙后面的另一台计算机,并收到“页面加载问题”提示。

我觉得我遗漏了某些东西。

答案1

我认为这里还没有对此进行正确的描述,因此就在这里。

127.0.0.1 是环回地址。它存在于所有现代计算机系统中。任何从目标为 127.0.0.1 的接口发出的流量都会立即在同一台机器的环回接口上接收。该流量永远不会到达网络。

既然你在听仅有的在环回接口上,那么唯一能够访问您网站的计算机就是托管该网站的计算机。当其他计算机尝试连接到 127.0.0.1 时,它们会尝试连接到自己。我想您现在知道问题出在哪里了吧?


下面的图画也许可以最好地说明这个概念:

很棒的点图


为了解决您的实际问题,您需要做两件事。

  1. 收听地址其他计算机可以联系。您有某种正常的 IP。使用该 IP 代替 127.0.0.1。
  2. 如果你必须使用命名虚拟主机(非必需),那么您要么需要在与机器联系的每台计算机的 hosts 文件中添加一个条目,要么需要在本地 DNS 服务器中添加一个 DNS 条目,其中包含可urs.local访问的 IP。如果您需要对多台机器执行此操作,请使用 DNS。它是正确的方式™

总结127.0.0.1 位于一个接口上,其流量永远不会离开它所连接的机器。它存在于 TCP/IP 堆栈的每个现代实现中。告诉其他机器连接到 127.0.0.1 将使它们尝试连接到自己,而不是您的机器。

答案2

您在其他机器上究竟使用了什么 URL?127.0.0.1 是 localhost。远程机器永远无法访问该 URL,它仅指向本地机器。因此,为了从其他计算机访问此服务器上的站点,您必须执行以下两项操作:

  1. 修改 vhost 不再监听 127.0.0.1
  2. 选择非“localhost”的服务器名称(例如主机名)
  3. 将远程计算机的浏览器指向此服务器名称

答案3

是的 - 由于多种原因,这会产生问题:

1) 127.0.0.x 本质上是指系统本身。因此,即使您确实在其他系统上手动更新了主机文件,它们也无法找到您想要的服务器。

2)127.0.0.x 没有监听外部连接。

我同意您的虚拟主机需要监听网络可访问的 IP。完成此操作后,您就可以利用 DNS 将工作站指向适当的位置。

相关内容