为什么其他电脑无法访问我在 127.0.0.1 上的 web 服务器?

mcg*_*ilm -3 local-area-network virtualhost mamp

我正在尝试在我添加的办公室的机器上设置虚拟主机

127.0.0.1 urs.local
Run Code Online (Sandbox Code Playgroud)

到主机文件,

并将其添加到配置中

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>
Run Code Online (Sandbox Code Playgroud)

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

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

我想我在某个地方遗漏了一些东西。

MDM*_*rra 21

我认为这里没有真正正确地描述这一点,所以就这样吧。

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

由于您在环回接口上侦听,因此唯一可以访问您站点的机器就是托管该站点的机器。当其他计算机尝试连接到 127.0.0.1 时,它们正在尝试连接到自己。你看看现在问题出在哪里,我接受吗?


这个概念可能最好用这张图来说明:

真棒点图


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

  1. 侦听其他计算机可以联系的地址。你有某种普通的 IP。使用它而不是 127.0.0.1。
  2. 如果您必须使用命名的虚拟主机(不是必需的),那么您需要在与您的机器联系的每台计算机的主机文件中添加一个条目,或者您需要在本地 DNS 服务器中添加一个 DNS 条目以用于urs.local具有可访问的IP。如果您需要对一台或两台以上的机器执行此操作,请使用 DNS。这是正确的方式™

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

  • +1 为是的兄弟!这就是我! (8认同)