Virtual machine 如何使用不同端口上的Vagrant专用网络访问VM?

Virtual machine 如何使用不同端口上的Vagrant专用网络访问VM?,virtual-machine,vagrant,Virtual Machine,Vagrant,我正在运行一个具有指定ip地址和主机名的专用网络漫游环境。我目前可以在端口80上访问http版本,但我也希望能够在端口8080上访问它 我添加了如下内容: config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true 但是,当我在8080端口访问我的站点时,我得到一个不可用的页面错误。端口80仍然工作。如果转发的端口不适用于专用网络,如何在其他端口上正确访问VM 记住,Vagrant Port forw

我正在运行一个具有指定ip地址和主机名的专用网络漫游环境。我目前可以在端口80上访问http版本,但我也希望能够在端口8080上访问它

我添加了如下内容:

config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true

但是,当我在8080端口访问我的站点时,我得到一个不可用的页面错误。端口80仍然工作。如果转发的端口不适用于专用网络,如何在其他端口上正确访问VM

记住,Vagrant Port forwarding仅适用于默认NAT网络(使用VirtualBox NAT),不适用于私有或公共

因此,如果您想通过端口8080上的专用IP访问该服务,您可以在端口8080上侦听该服务,或者使用iptables转发数据包

e、 g


iptables-t nat-A PREROUTING-p tcp-dport 80-j REDIRECT-to port 8080
好的,我正在使用rails应用程序,它是我的Vagrant文件,我可以很好地访问我的web服务

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

  config.vm.hostname = "web"

  config.vm.network :private_network, ip: "192.168.33.10"

  config.vm.network :forwarded_port, host: 3000, guest: 3000  
end

我是按照

的说明做的,我不想在端口8080上监听,因为我的生产环境运行在端口80上,所以我希望vagrant尽可能地模仿它。我没有在Linux上运行,所以iptables不是一个选项。这似乎是可行的,因为您正在“映射”相同的端口。实际上,您只需直接访问专用网络IP上的3000端口。如果尝试映射不同的端口,您会发现主机端口无法工作。