在我的Vagrantfile中,我有我的开发机器的定义,其私有网络IP为192.168.33.10,转发端口为" guest = 80,host = 8888",但是在运行我的流浪汉环境时并且我尝试运行curl -i 192.168.33.10:8888我收到一条错误,说“连接到192.168.33.10:8888失败;连接拒绝',但是当我尝试连接到192.168.33.10:80时,一切都还可以。
我的Vagrantfile是:
Vagrant::configure("2") do |config|
config.vm.box = "precise32"
config.vm.define :web do |www|
www.vm.hostname = "apache"
www.ssh.max_tries = 10
www.vm.network :forwarded_port, guest: 80, host: 8888 # Apache port
www.vm.network :private_network, ip: "192.168.33.10"
www.vm.synced_folder "www", "/var/www", :extra => 'dmode=777,fmode=777'
end
end
为什么会这样?流浪者是否忽略了转发端口?
答案 0 :(得分:6)
默认情况下,Vagrant Boxes使用NAT模式,这意味着访客位于router
(主机和访客之间的 VirtualBox网络引擎)之后,它将流量映射到虚拟机机器透明。客人看不见,无法从主人那里得到。
这就是我们需要端口转发的原因。其他在guest上运行的服务不会出现这种情况。可以访问。
在您使用Private Network的情况下,将为访客分配一个只有主持人才能访问的私有IP地址,即192.168.33.10
。
访问guest虚拟机上托管的网站的正确方法是=>来自主持人的http://192.168.33.10
。
您在Vagrantfile
www.vm.network :forwarded_port, guest: 80, host: 8888 # Apache port
它将来宾端口80转发给您的主机8888. 因为您没有使用NAT模式我很确定它会被忽略。尝试curl -Is http://localhost:8888
。
注意:即使它仍以某种方式工作,您也应该通过=>访问网络。来自您的主机的
http://localhost:8888/
。