无法从vagrant主机访问节点express应用程序

eig*_*nts 4 networking ports node.js express

我是网络和分配港口和那种性质的东西的新手.我一直在使用vagrant一​​段时间,并且在尝试获取测试环境然后通过主机浏览器访问它时从未遇到任何问题.在我的Vagrantfile中为此设置的是:

# network stuff
config.vm.network "forwarded_port", guest: 8000, host: 8000
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.hostname = "test-box-debian"
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试学习一些关于node.js的内容,每个教程都说我可以运行npm start,确实这很好用.我可以调用wget localhost:3000(端口3000是Express中的默认值),然后index.html从express 获取默认页面.

但是,当我尝试从主机浏览器访问"192.168.33.10:3000"时,它不起作用.我可以运行netstat并获得以下结果:

sudo netstat -ltpn | grep 3000
tcp6       0      0 :::3000                 :::*                         LISTEN      17238/node  
Run Code Online (Sandbox Code Playgroud)

我可以看到有些东西看起来不对,但我对端口和网络知之甚少,不知道出了什么问题以及如何修复它.

Ale*_*lex 6

首先,确保您的服务器正在侦听正确的IP并且您没有将Express侦听器绑定到其他位置:

.listen(3000)不是 .listen(3000, '127.0.0.1')

或者,尝试将Express服务器绑定到您的专用IP或通配符IP,看看是否能解决您的连接问题:

// Wildcard (All IP's) binding
  .listen(3000, '0.0.0.0')

// Specific binding
  .listen(3000, '192.168.33.10')
Run Code Online (Sandbox Code Playgroud)

最后,可能无法从主机访问端口3000.如果服务器代码中的上述选项均无效,请尝试将以下行添加到Vagrantfile:

config.vm.network "forwarded_port", guest: 3000, host: 3000