Vagrant主机端口被忽略

时间:2013-07-22 05:49:00

标签: web workflow vagrant

在我的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

为什么会这样?流浪者是否忽略了转发端口?

1 个答案:

答案 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/