如何删除 Vagrant 中的转发端口?
How do I remove a forwarded port in Vagrant?
我下载了一个 Vagrantfile 并 运行 它在我的 CentOS 7 机器上。当我执行 vagrant up
时,进程成功启动,机器启动并准备就绪。我可以使用 URL 访问进程:
http://<IP_ADDRESS_OF_BOX>:8080
但是,我不希望 Vagrant 使用端口 8080,而宁愿使用像 8601 这样的模糊端口。因此,我修改了 Vagrantfile 以包含 config.vm.network
的另一个条目。
更改前 - Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = 'ToraToraTora'
end
更改后 - Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = 'ToraToraTora'
config.vm.network "forwarded_port", guest: 80, host: 8601
end
现在我可以使用新端口访问进程了:
http://<IP_ADDRESS_OF_BOX>:8601
但是,之前的端口也继续工作:
http://<IP_ADDRESS_OF_BOX>:8080
正在执行 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 ~]$
来自 运行 的输出 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]$
如何阻止 Vagrant 进程使用端口 8080 而只使用端口 8601?
如果您能够使用 http://<IP_ADDRESS_OF_BOX>
我觉得您使用的是 vagrant private network 和静态 IP,在这种情况下,IP 上的所有端口都可以访问,您不一定需要 forward_port
选项。
此外,当 netstat
使用您的选项时 运行 它使用 sudo netstat -tulpn
所以您会在
后面找到 PID/Program 名称
您可以明确禁用 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
如果您进行更改并执行 vagrant reload
,它将清除 8080 转发端口。那时,您可以从 Vagrantfile 中删除 8080 行。
注意: Vagrant 中的端口转发可以比作无线电广播。来宾端口就像广播电台,而主机端口就像收音机。就像无线电台可以向任意数量的无线电广播一样,Vagrant 机器上的访客端口可以转发到主机上的多个端口。但是,每个主机端口一次只能接收来自一个访客端口的转发流量,就像收音机一次只能调到一个电台一样。
所以在这种情况下,两个无线电(主机上的端口 8601 和 8080)被调谐到同一个电台(访客上的端口 80)。解决办法是简单地关闭 8080 的收音机。
我下载了一个 Vagrantfile 并 运行 它在我的 CentOS 7 机器上。当我执行 vagrant up
时,进程成功启动,机器启动并准备就绪。我可以使用 URL 访问进程:
http://<IP_ADDRESS_OF_BOX>:8080
但是,我不希望 Vagrant 使用端口 8080,而宁愿使用像 8601 这样的模糊端口。因此,我修改了 Vagrantfile 以包含 config.vm.network
的另一个条目。
更改前 - Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = 'ToraToraTora'
end
更改后 - Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = 'ToraToraTora'
config.vm.network "forwarded_port", guest: 80, host: 8601
end
现在我可以使用新端口访问进程了:
http://<IP_ADDRESS_OF_BOX>:8601
但是,之前的端口也继续工作:
http://<IP_ADDRESS_OF_BOX>:8080
正在执行 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 ~]$
来自 运行 的输出 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]$
如何阻止 Vagrant 进程使用端口 8080 而只使用端口 8601?
如果您能够使用 http://<IP_ADDRESS_OF_BOX>
我觉得您使用的是 vagrant private network 和静态 IP,在这种情况下,IP 上的所有端口都可以访问,您不一定需要 forward_port
选项。
此外,当 netstat
使用您的选项时 运行 它使用 sudo netstat -tulpn
所以您会在
您可以明确禁用 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
如果您进行更改并执行 vagrant reload
,它将清除 8080 转发端口。那时,您可以从 Vagrantfile 中删除 8080 行。
注意: Vagrant 中的端口转发可以比作无线电广播。来宾端口就像广播电台,而主机端口就像收音机。就像无线电台可以向任意数量的无线电广播一样,Vagrant 机器上的访客端口可以转发到主机上的多个端口。但是,每个主机端口一次只能接收来自一个访客端口的转发流量,就像收音机一次只能调到一个电台一样。
所以在这种情况下,两个无线电(主机上的端口 8601 和 8080)被调谐到同一个电台(访客上的端口 80)。解决办法是简单地关闭 8080 的收音机。