vagrant/etc/hosts:机器IP与本地主机

vagrant/etc/hosts:机器IP与本地主机,vagrant,vagrantfile,hosts,virtual-hosts,vagrant-provision,Vagrant,Vagrantfile,Hosts,Virtual Hosts,Vagrant Provision,我使用此IP地址设置了一台流浪机器: Vagrant.configure("2") do |config| config.vm.network :private_network, ip: 192.168.33.11 config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.hostname = "my-devenv" ... end 一切正常。但是我对VM上的/etc/hosts文件感到困惑:

我使用此IP地址设置了一台流浪机器:

Vagrant.configure("2") do |config|
    config.vm.network :private_network, ip: 192.168.33.11
    config.vm.network "forwarded_port", guest: 80, host: 8080
    config.vm.hostname = "my-devenv"
...
end
一切正常。但是我对VM上的/etc/hosts文件感到困惑:使用localhost和VM的IP(127.0.0.1some-dev-site.dev与192.168.33.11some-dev-site.dev)有什么区别


概述

本地主机在不同的机器上通常是相同的:127.0.0.1(本地环回),VM IP是“网络”上的外部IP。例如,您可以通过访问VM IP从您的机器连接到您的VM,但是如果您从您的机器连接到VM的localhost,那么您将在自己的机器上结束

如果将服务绑定到127.0.0.1,则无法从“机器”的“外部”访问它

如果您想阅读更多内容,这可能会提供更好的解释:

更具体地针对您的情况


不确定我是否正确理解了您的问题,但我想您的问题是:您的虚拟机的/etc/hosts中的主机名是什么?这是因为它们不存在于DNS中,如果您连接到这些主机,它需要在正确的位置结束,在这种情况下,这就是虚拟机本身。

如果我理解清楚的话:当我在本地机器中调用
某个dev site.dev
时(它的主机中也有:
192.168.33.11某个dev site.dev
)它使用
some dev site.dev
与虚拟机对话,然后虚拟机将其转换为127.0.0.1?,这意味着最后:虚拟机的IP 192.168.33.11==虚拟机的127.0.0.1如果vagrant在您的机器上的本地/etc/主机中添加了192.168.33.11 some-dev-site.dev,那么您将在虚拟机的外部接口上访问Web服务。当您在虚拟机内部访问some-dev-site.dev时,它很可能会连接到本地环回接口127.0.0.1上的Web服务。您需要将/etc/hosts视为simpel本地“DNS服务器”。地址127.0.0.1作为专用IP地址,仅对您所在的计算机可见。和192.168.33.11!=VM的127.0.0.1这是两个独立的接口。在虚拟机上运行命令:ifconfig,您将看到类似eth0192.168.33.11和lo0127.0.0.1的内容
127.0.0.1 localhost
127.0.0.1 some-dev-site.dev
192.168.33.11 some-dev-site.dev