流浪汉:转发的港口不起作用

时间:2017-04-21 05:14:39

标签: java spring networking vagrant virtual-machine

我有一个可编译的弹簧应用程序/在vagrant上运行并侦听localhost:8080(在vagrant中)。

这是我的 Vagrantfile

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network :forwarded_port, guest: 80, host: 9000, host_ip: "127.0.0.1"
config.vm.provision :shell, path: "bootstrap.sh"
end

现在我想通过localhost:9000从主机访问我的spring-application。

无论如何forwarded_port行没有用,我真的不知道为什么?

我的 Vagrantfile 需要更改哪些内容?

SOLUTION:

下面的Vagrantfile对我有用。

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provision :shell, path: "bootstrap.sh"

config.vm.provider "virtualbox" do |v|
        v.destroy_unused_network_interfaces = true
        v.memory = 2048
        v.cpus = 4
end
end

2 个答案:

答案 0 :(得分:2)

它不起作用,因为应用正在监听localhost

让应用程序在常规界面上进行侦听。如果它不是Vagrant界面,您可能还需要添加guest_ip

config.vm.network :forwarded_port, guest: 80, guest_ip: "xxx.xxx.xxx.xxx", host: 9000, host_ip: "127.0.0.1

答案 1 :(得分:0)

如果您在VM中运行的spring应用程序确实正在侦听其本地端口8080,并且您希望从主机访问该应用程序为http://localhost:9000/,则Vagrantfile中的行应为:

config.vm.network :forwarded_port, guest: 8080, host: 9000

即。你有一个拼写错误指定客人端口80而不是8080。

您可能不需要指定任何其他参数,例如host_ip或guest_ip。