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 ##########################

我正在用vagrant测试nginx设置,但我似乎遗漏了一些细节,因为当我尝试在静态ip上从主机访问nginx时,连接超时。我的流浪汉档案:

   # -*- 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 -