Vagrant/etc/hosts : machine IP vs localhost

标签 vagrant vagrantfile hosts virtual-hosts vagrant-provision

我有一个使用此 IP 地址的 vagrant 机器设置:

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.1 some-dev-site.dev vs 192.168.33.11 some-dev-site.dev)有什么区别?
127.0.0.1 localhost
127.0.0.1 some-dev-site.dev
192.168.33.11 some-dev-site.dev

最佳答案

一般

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

如果您将服务绑定(bind)到 127.0.0.1,您将无法从“机器”的“外部”访问它。

如果您想阅读更多内容,这可能会提供更好的解释:
https://www.lifewire.com/network-computer-special-ip-address-818385

更具体到您的情况

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

关于 Vagrant/etc/hosts : machine IP vs localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645188/

相关文章:

vagrant - 使用 vagrant 时 Figwheel 无法热重载或更新文件保存

vagrant 设置重复的 IP 地址; Ansible 会接他们吗?

docker - 如何将容器的主机名添加到/etc/hosts?

ssh - 通过 Vagrant 删除主机的 known_host 文件中的行

bash - 在 Mac 上使用脚本更改主机文件

javascript - 当使用 "hosts"文件中定义的别名时,jQuery.ajax 无法找到服务器,但可以使用 IP 地址 - 如何修复?

linux - 简单的基本 Flask 应用程序中的权限错误权限被拒绝

ruby - vagrant-berkshelf 插件编译(安装)报错

syntax - PyCharm 中的 Vagrantfile 语法高亮

vagrant + Permission denied 造币厂