我正在测试nginx设置与vagrant但我似乎缺少一些细节,因为当我尝试在静态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
我能够访问nginx vi localhost:4000,但如果我http://192.168.10.101:4000,则连接超时。我还试图阻止防火墙,如下所示:
vagrant@webserver:~$ sudo ufw disable
Firewall stopped and disabled on system startup
没有帮助。对此有任何指导吗?
编辑 - 1
我在阅读https://www.vagrantup.com/docs/virtualbox/networking.html处的文档后删除了虚拟机专用网络。但是,这个问题有点令人困惑,因为现在我可以在以下位置访问nginx测试页面: http://192.168.10.101但不是http://192.168.10.101:4000。虽然我可以访问http://localhost:4000。可能是我错过了什么。
编辑 - 2
在vm和转发端口中运行python simplehttpserver:
python -m SimpleHTTPServer 8000
Vagrantfile
dbserver.vm.network "forwarded_port", guest: 8000 , host: 5000, host_ip: "127.0.0.1"
但我可以访问我的测试页面:
但不是
所以这让我觉得有一些规则允许我访问我的虚拟机端口,而无需在专用网络上进行实际的端口转发。
$> 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
答案 0 :(得分:1)
尝试分析并在vagrant site.中找到。
即使他们已经提供Defining a Forwarded Port
,他们也会将免责声明视为以下内容。
对于大多数提供商,默认情况下转发的端口绑定到所有接口。这意味着网络上的其他设备可以访问转发的端口。如果要限制访问权限,请参阅下面的guest_ip和host_ip设置。
在这种情况下,虚拟机提供商似乎正在耍手段。它是默认的客户机端口。
我也觉得网络配置的forwarded_port
选项效果不佳。
我在我的机器上使用上面给出的流浪文件尝试了相同的设置。
我的观察:
nginx
安装vagrant
。nginx
中手动安装vagrant
,并使其正常运行。nginx
主页。nginx
中。并且在主机中可以从端口80
本身访问。该链接的结论是:
对于大多数提供商,默认情况下转发的端口绑定到所有接口。
修改强>
即使尝试了在guest-machine
中运行的示例python服务器,并经过测试,也可以在没有任何fwding端口的情况下访问python-webserver。
以下是从vagrant中的python服务器输出:
(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 -