【发布时间】:2017-08-06 15:35:18
【问题描述】:
我正在使用 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
我可以访问 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 的文档后,我删除了 virtualbox 专用网络。但是,这个问题有点令人困惑,因为现在我可以访问 nginx 测试页面: http://192.168.10.101 但不在http://192.168.10.101:4000。虽然我可以访问http://localhost:4000。可能是我错过了一些东西。
编辑 - 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
【问题讨论】:
-
尝试评论
forwarded_port行并执行vagrant up。并验证您是否可以访问? -
我做到了,它现在只转发端口 22。 ==> 网络服务器:转发端口...网络服务器:22(访客)=> 2222(主机)(适配器 1)。我仍然可以在 80 端口访问 nginx 测试页面。我似乎错过了关于转发机制的一些要点
-
如果你能修复,那就太好了。如果仍然有问题,请告诉我,但我需要在本地系统中进行设置并尝试。 :) 如果您仍然遇到问题,我会尝试这样做并更新您。
-
谢谢@Haranadh。现在这并不是真正的问题,而是好奇地了解行为是什么。如果您可以尝试一下,看看这是否也是您最后会发生的事情,那就太好了
-
在我的本地机器上尝试了设置,并分享了我的发现作为答案。我也面临和你一样的情况。
forwarded_port不像 docker 那样真正地完成它的工作。
标签: nginx vagrant virtualbox