我已经在一个带有私有网络 IP 的 vagrant box 上设置了 CentOS 6。我可以使用 IP SSH 进入盒子,这样就可以了。但是,当我卷曲它时,我在端口 80 上收到连接被拒绝。有一个非常基本的 nginx 在里面提供它的默认欢迎页面。从盒子里面卷曲它是有效的。
Vagrant.configure("2") do |config|
config.vm.box = "Centos-6.3-minimal"
config.vm.box_url = "https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box"
config.vm.network :private_network, ip: "192.168.33.44"
config.vm.hostname = "local.example.com"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
end
以下是我尝试过的一些事情:
- 更改为端口转发 80 -> 8080。Curling on
localhost:8080
只是挂在那里。 - 尝试另一个 IP 地址。没有不同。
python -m SimpleHTTPServer
在已知侦听的服务器上打开 a0.0.0.0
。仍然被拒绝连接。
众所周知,这些事情是有效的:
- 使用给定的专用网络 IP SSH 到服务器是可行的。
- 从盒子里面卷曲是有效的。
- 相同的设置适用于真实服务器。
我已经安装了 Guest Additions,但它们的版本在来宾和主机上是不同的。这可能是问题所在。但是为什么 SSH 可以工作,而不是 80 端口呢?这是我这样做时的输出vagrant reload
:https ://gist.github.com/magnars/496e553f07ad5c770c54
更新
虽然这不起作用:
config.vm.network :forwarded_port, guest: 80, host: 8080
这样做:
ssh -f [email protected] -L 8080:127.0.0.1:80 -N
有任何想法吗?
尽管有很多事情可能出错,但首先要检查的是客户机内部的防火墙:它可能很简单,因为它有一个针对端口 22 而不是端口 80 的规则。
通过禁用来宾主机中的防火墙解决了同样的问题
你可以
iptables --list
用来检查