Vagrant主机端口被忽略

ram*_*mon 4 workflow vagrant web

在我的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
Run Code Online (Sandbox Code Playgroud)

为什么会这样?是流浪汉忽略转发的端口?

Ter*_*ang 6

默认情况下,流浪盒使用NAT模式,则意味着客人是一个落后router(主机和客户机之间的VirtualBox网络引擎,它映射往返于虚拟机的透明流量).客人看不见,无法从主人那里得到.

这就是我们需要端口转发的原因.否则,无法访问在guest上运行的服务.

在您的情况下,您正在使用专用网络,将为访客分配一个只有主机才能访问的私有IP地址,即192.168.33.10.

访问托管在guest虚拟机上的Web的正确方法是=> http://192.168.33.10来自主机.

你有端口转发部分 Vagrantfile

www.vm.network :forwarded_port, guest: 80, host: 8888  # Apache port
Run Code Online (Sandbox Code Playgroud)

它将来宾端口80转发到您的主机8888. 因为您没有使用NAT模式,我很确定它会被忽略.试着curl -Is http://localhost:8888.

注意:即使它仍以某种方式工作,您应该http://localhost:8888/从主机访问web by => .