我正在尝试在办公室的一台机器上设置虚拟主机,我已经添加了
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 时,它们会尝试连接到自己。我想您现在知道问题出在哪里了吧?
下面的图画也许可以最好地说明这个概念:
为了解决您的实际问题,您需要做两件事。
- 收听地址其他计算机可以联系。您有某种正常的 IP。使用该 IP 代替 127.0.0.1。
- 如果你必须使用命名虚拟主机(非必需),那么您要么需要在与机器联系的每台计算机的 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,它仅指向本地机器。因此,为了从其他计算机访问此服务器上的站点,您必须执行以下两项操作:
- 修改 vhost 不再监听 127.0.0.1
- 选择非“localhost”的服务器名称(例如主机名)
- 将远程计算机的浏览器指向此服务器名称
答案3
是的 - 由于多种原因,这会产生问题:
1) 127.0.0.x 本质上是指系统本身。因此,即使您确实在其他系统上手动更新了主机文件,它们也无法找到您想要的服务器。
2)127.0.0.x 没有监听外部连接。
我同意您的虚拟主机需要监听网络可访问的 IP。完成此操作后,您就可以利用 DNS 将工作站指向适当的位置。