【问题标题】:Vagrant host port ignored流浪主机端口被忽略
【发布时间】:2013-07-20 18:47:50
【问题描述】:

在我的 Vagrantfile 中,我定义了我的开发机器,其专用网络 ip 为 192.168.33.10,转发端口为“guest=80,host=8888”,但是当运行我的 vagrant 环境时,我尝试运行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

为什么会这样? vagrant 是否忽略了转发的端口?

【问题讨论】:

    标签: web workflow vagrant


    【解决方案1】:

    默认情况下,Vagrant Boxes 使用 NAT 模式,这意味着来宾位于 router主机和来宾之间的 VirtualBox 网络引擎)之后,它透明地映射进出虚拟机的流量.来宾是不可见的,并且主机无法访问。

    这就是我们需要端口转发的原因。否则在客户机上运行的服务将无法访问。

    在您的情况下,您使用的是Private Network,来宾将被分配一个只有主机才能访问的私有IP地址,即192.168.33.10

    访问主机上托管的网络的正确方法是=>来自主机的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/ 从您的主机访问网络。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-08
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多