实例 1(工作中)

实例 1(工作中)

用户的主目录中有 2 个 vagrant 项目。Mac OSX 10.8

第一个 vagrant 实例是在几个月前创建的,当时用户运行的是旧版本 (1.1.x),第二个实例是使用版本 1.2.2 创建的。 (因此 vagrant 文件语法略有不同)

问题是第一个实例(较旧的实例)启动了,并且当用户使用端口转发导航到 localhost:8080 时成功显示 apache 欢迎页面。http://docs.vagrantup.com/v2/networking/forwarded_ports.html

第二个实例没有显示 apache 欢迎页面。

实例 1(工作中)

Vagrant::Config.run do |config|

  config.vm.box = "lucid32"
  config.vm.provision :shell, :path => "bootstrap.sh"
  config.vm.network :bridged
  config.vm.forward_port 80, 8080

end

实例 2(不工作)

Vagrant.configure("2") do |config|

  config.vm.box = "lucid32"
   config.vm.network :forwarded_port, guest: 80, host: 8080
   config.vm.network :public_network

   config.vm.provision :puppet do |puppet|
     puppet.manifests_path = "manifests"
     puppet.manifest_file  = "init.pp"
     config.vm.hostname = 'salesforce'
   end
end

我已经验证了以下内容:

两个实例都安装并正在运行 apache2
我可以运行 curl localhost:8080 并检索 apache 测试页面的 html
我一次只运行 1 个实例,以避免与端口 8080 冲突
两个实例都绑定到同一个网卡

什么可能阻止端口转发在较新的 vagrant 实例上工作?

答案1

实例 1 是桥接的,而另一个使用:public_network。您能到达 :public_network 接口上的端口 22 吗?(我希望您删除了不安全的密钥和密码)。

也许您还需要 :host_only 网络?

答案2

感谢这个 stackoverflow 问题,我终于搞明白了。原来是防火墙 https://stackoverflow.com/questions/5984217/vagrants-port-forwarding-not-working

验证防火墙是否为端口 80 打了洞(或者直接关闭 iptables)

 service iptables stop

验证 curl 是否能够从虚拟机内部访问 apache 测试页面

vagrant ssh
curl -v localhost

最后验证主机是否可以通过 curl 访问页面

exit
curl -v 'http://localhost:8080'

相关内容