我正在尝试使用Vagrant设置Node.js应用程序.在同一个Vagrant盒子里面还有一个Rails应用程序,工作正常.节点正在使用端口3001,所以这里是Vagrantfile中的配置设置:
# Every Vagrant virtual environment requires a box to build off of. config.vm.box = "puppetlabs/ubuntu-14.04-32-puppet" config.vm.provision :shell, path: "bootstrap.sh" config.vm.network :forwarded_port, host: 4567, guest: 3000 config.vm.network :forwarded_port, host: 5678, guest: 3001
所以,我在Vagrant框中启动了Node.这表明在Vagrant框内它响应端口3001上的请求:
vagrant@localhost:~$ wget 127.0.0.1:3001 --2014-12-24 06:37:40-- http://127.0.0.1:3001/ Connecting to 127.0.0.1:3001... connected. HTTP request sent, awaiting response... 200 OK
来宾机器正在侦听端口3001:
$ sudo netstat -ltpn | grep 3001 tcp 0 0 127.0.0.1:3001 0.0.0.0:* LISTEN 1422/node
主机正在侦听端口5678:
sudo netstat -ltpn | grep 5678 tcp 0 0 0.0.0.0:5678 0.0.0.0:* LISTEN 30966/VBoxHeadless
然而,我无法从主机浏览器连接到该应用程序.
可能是什么问题?
更新:输出vagrant up
:
[default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] -- 3000 => 4567 (adapter 1) [default] -- 3001 => 5678 (adapter 1)
azangru.. 12
得到了同事的答案.
原来,vagrant中的节点服务器正在监听localhost,而它应该一直在监听0.0.0.0:
所以www文件中的这一行:
var server = app.listen(app.get('port'), 'localhost', function() {
不得不改为:
var server = app.listen(app.get('port'), '0.0.0.0', function() {
现在一切正常.
得到了同事的答案.
原来,vagrant中的节点服务器正在监听localhost,而它应该一直在监听0.0.0.0:
所以www文件中的这一行:
var server = app.listen(app.get('port'), 'localhost', function() {
不得不改为:
var server = app.listen(app.get('port'), '0.0.0.0', function() {
现在一切正常.