Nginx 私有网络中的流浪端口转发行为
我正在用vagrant测试nginx设置,但我似乎遗漏了一些细节,因为当我尝试在静态ip上从主机访问nginx时,连接超时。我的流浪汉档案:Nginx 私有网络中的流浪端口转发行为,nginx,vagrant,virtualbox,Nginx,Vagrant,Virtualbox,我正在用vagrant测试nginx设置,但我似乎遗漏了一些细节,因为当我尝试在静态ip上从主机访问nginx时,连接超时。我的流浪汉档案: # -*- mode: ruby -*- # vi: set ft=ruby : $script = <<-SCRIPT sudo apt-get -y update sudo apt-get install -y nginx SCRIPT ##########################
# -*- mode: ruby -*-
# vi: set ft=ruby :
$script = <<-SCRIPT
sudo apt-get -y update
sudo apt-get install -y nginx
SCRIPT
###################################
Vagrant.configure("2") do |config|
# webserver server
config.vm.define "webserver" do |webserver|
webserver.vm.box = "bento/ubuntu-16.04"
webserver.ssh.insert_key = false
webserver.vm.network "private_network", ip: "192.168.10.101"
webserver.vm.network "forwarded_port", guest: 80 , host: 4000, host_ip: "127.0.0.1"
webserver.vm.hostname = "webserver"
webserver.vm.provision "shell", inline: "sed 's/127\.0\.0\.1.*webserver.*/192\.168\.10\.101 webserver/' -i /etc/hosts"
webserver.vm.provider "virtualbox" do |vb|
# Customize VM
vb.name = "webserver"
vb.memory = "1024"
vb.cpus = "2"
end
end
end
没有帮助。有什么指导吗
编辑-1
在阅读了上的文档后,我删除了virtualbox专用网络。但是,这个问题有点让人困惑,因为现在我可以在以下位置访问nginx测试页面:
但现在不行。虽然我可以访问。也许我错过了什么
编辑-2
在vm和转发端口中运行python simplehttpserver:
python -m SimpleHTTPServer 8000
流浪汉档案
dbserver.vm.network "forwarded_port", guest: 8000 , host: 5000, host_ip: "127.0.0.1"
但我可以访问我的测试页面:
但并非如此
因此,我认为有一些规则允许我访问virtualbox端口,而无需在专用网络上进行实际端口转发
$> netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGSc 40 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 4 57934 lo0
169.254 link#4 UCS 0 0 en0
192.168.0 link#4 UCS 0 0 en0
192.168.0.1/32 link#4 UCS 1 0 en0
192.168.0.1 c0:a0:bb:c6:f5:58 UHLWIir 48 6051 en0 1188
192.168.0.101/32 link#4 UCS 0 0 en0
192.168.10 link#17 UC 2 0 vboxnet
192.168.10.102 8:0:27:1b:d5:98 UHLWI 0 73 vboxnet 586
224.0.0/4 link#4 UmCS 2 0 en0
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 1067 en0
255.255.255.255/32 link#4 UCS 0 0 en0
试着分析并发现 尽管他们给出了定义转发端口的
,但他们提到了如下内容的免责声明
对于大多数提供程序,转发端口默认绑定到所有接口。这意味着网络上的其他设备可以访问转发的端口。如果要限制访问,请参阅下面的来宾ip和主机ip设置
在这种情况下,virtualbox提供商似乎在发挥作用。默认情况下,会转发来宾计算机端口。
我还觉得这个网络配置的转发\u端口
选项没有很好地工作
我在我的机器上用上面给出的流浪者文件尝试了相同的设置
我的观察:
- 您的vagrant文件的脚本部分没有在my local
vagrant
中安装nginx
- 我尝试在本地的Wagrant中手动安装
nginx
,并使其运行
- 我可以从主机的浏览器中看到来宾机的
nginx
主页
- 在默认80端口上运行的来宾计算机
nginx
中。在主机中,可以从端口80
本身进行访问
链接的结论是:
对于大多数提供程序,转发端口默认绑定到所有接口
编辑:
即使使用运行在客户机上的示例python服务器进行了尝试并进行了测试,也可以在vagrant设置中访问python Web服务器,而无需任何发送端口
以下是vagrant中python服务器的输出:
尝试评论forwarded\u port
行,然后执行vagrant up
。并验证您是否能够访问?我访问了,它现在才转发端口22。=>Web服务器:转发端口。。。webserver:22(来宾)=>2222(主机)(适配器1)。我仍然可以访问端口80上的nginx测试页面。我似乎错过了一些关于转发机制的要点,如果你能修复,那就太好了。如果仍然存在问题,请让我知道,但我需要在本地系统中进行设置并尝试。:)如果您仍然有问题,我会尝试这样做并向您提供最新信息。谢谢@Haranadh。现在这并不是一个真正的问题,而是一个好奇的问题,去理解这种行为是什么。如果您可以尝试一下,看看这是否是您所在的位置发生的情况,并在我的本地计算机上尝试了设置,并将我的发现作为答案分享,那将是非常棒的。我也面临着和你一样的问题<代码>转发端口
不像docker那样真的在做它的工作。@f-z-n:如果我的回答澄清了你的问题,如果你喜欢我的回答,请接受。
$> netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGSc 40 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 4 57934 lo0
169.254 link#4 UCS 0 0 en0
192.168.0 link#4 UCS 0 0 en0
192.168.0.1/32 link#4 UCS 1 0 en0
192.168.0.1 c0:a0:bb:c6:f5:58 UHLWIir 48 6051 en0 1188
192.168.0.101/32 link#4 UCS 0 0 en0
192.168.10 link#17 UC 2 0 vboxnet
192.168.10.102 8:0:27:1b:d5:98 UHLWI 0 73 vboxnet 586
224.0.0/4 link#4 UmCS 2 0 en0
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 1067 en0
255.255.255.255/32 link#4 UCS 0 0 en0
(envflask) vagrant@webserver:~/test$ ls
flasktest.py
(envflask) vagrant@webserver:~/test$ python flasktest.py
Starting RestServer at port 9595
* Running on http://0.0.0.0:9595/ (Press CTRL+C to quit)
127.0.0.1 - - [08/Aug/2017 13:35:01] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [08/Aug/2017 13:35:16] "GET / HTTP/1.1" 200 -