如何在Vagrant中删除转发的端口?

Tor*_*ora 5 port vagrant

我下载了一个Vagrantfile并在我的CentOS 7盒子上运行它.执行时vagrant up,进程成功启动,机器启动并准备就绪.我可以使用URL访问该进程:

http://<IP_ADDRESS_OF_BOX>:8080
Run Code Online (Sandbox Code Playgroud)

但是,我不希望Vagrant使用端口8080而宁愿使用像8601这样的模糊端口.因此,我修改了Vagrantfile以包含另一个条目config.vm.network.

更改之前 - Vagrantfile

Vagrant.configure(2) do |config|
    config.vm.box = 'ToraToraTora'
end
Run Code Online (Sandbox Code Playgroud)

改变后 - Vagrantfile

Vagrant.configure(2) do |config|
    config.vm.box = 'ToraToraTora'
    config.vm.network "forwarded_port", guest: 80, host: 8601
end
Run Code Online (Sandbox Code Playgroud)

现在我可以使用新端口访问该进程:

http://<IP_ADDRESS_OF_BOX>:8601
Run Code Online (Sandbox Code Playgroud)

但是,以前的端口也继续工作:

http://<IP_ADDRESS_OF_BOX>:8080
Run Code Online (Sandbox Code Playgroud)

执行sudo netstat -tulpn:

[ToraToraTora@andromeda ~]$ sudo netstat -tulpn | grep 26206
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      26206/VBoxHeadless  
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      26206/VBoxHeadless  
tcp        0      0 0.0.0.0:8601            0.0.0.0:*               LISTEN      26206/VBoxHeadless  
udp        0      0 0.0.0.0:40168           0.0.0.0:*                           26206/VBoxHeadless  
[ToraToraTora@andromeda ~]$
Run Code Online (Sandbox Code Playgroud)

运行输出vagrant port:

[ToraToraTora@andromeda app]$ vagrant port
The forwarded ports for the machine are listed below. Please note that
these values may differ from values configured in the Vagrantfile if the
provider supports automatic port collision detection and resolution.

    22 (guest) => 2222 (host)
    80 (guest) => 8080 (host)
    80 (guest) => 8601 (host)
[ToraToraTora@andromeda app]$ 
Run Code Online (Sandbox Code Playgroud)

如何阻止Vagrant进程使用端口8080并仅使用端口8601?

Pat*_*Lee 8

您可以明确禁用8080转发端口...

Vagrant.configure(2) do |config|
    config.vm.box = 'ToraToraTora'
    config.vm.network "forwarded_port", guest: 80, host: 8601
    config.vm.network "forwarded_port", guest: 80, host: 8080, disabled: true
end
Run Code Online (Sandbox Code Playgroud)

如果您进行了更改并执行了更改vagrant reload,则会清除8080转发端口.此时,您可以从Vagrantfile中删除8080行.

注意: Vagrant中的端口转发可以与无线电广播进行比较.访客端口就像无线电台,而主机端口就像无线电一样.与无线电台可以广播到任意数量的无线电的方式相同,Vagrant机器上的客户端口可以转发到主机上的多个端口.但是,每个主机端口一次只能从一个访客端口接收转发的流量,就像一次只能将无线电调谐到一个站一样.

因此,在这种情况下,两个无线电(主机上的端口8601和8080)被调谐到同一站(客户端上的端口80).解决方案只是在8080关掉收音机.