从 virtualbox 中的来宾访问 ubuntu 主机上的服务器 运行

Access server running on ubuntu host from guest in virtualbox

我在 ubuntu 中有一个 nodejs 项目 运行ning。所以我这样访问它:

http://localhost:9000/login

现在我正尝试从我 运行 在虚拟机上 windows7 来宾访问此服务器。

我的 ubuntu IP 是 192.168.1.13,我的 VM 网络配置是桥接适配器,所以我正在尝试

http://192.168.1.13:9000/login

但是不行

但是,当我运行在cmd 'ping 192.168.1.13'中回复成功。

有人能告诉我还需要做什么才能从访客访问我的服务器吗?

查看文件 /etc/hosts 并检查 localhost 是如何映射的。当然它被设置为 127.0.0.1 。如果你让你的 nodejs 应用程序监听 IP:port 192.168.1.13:9000 你将能够连接。或者更改我不推荐的本地主机的映射。

对于您想要实现的目标,您的 Node.js 应用程序应该侦听指定的 IP 地址和端口,该地址和端口可从其他系统访问。

您不能指望来自外部世界的用户 (OS) 访问您系统本地主机中 运行 的网络应用程序。

将您的代码更改为这样的代码以允许它监听 APP_PRIVATE_IP_ADDRESS(替换您的 IP,在本例中为 192.168.1.13):

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  // your code 
}).listen(8080, 'APP_PRIVATE_IP_ADDRESS');
console.log('Server running at http://APP_PRIVATE_IP_ADDRESS:8080/');

此外,为了进一步的可访问性,请检查 How To Set Up a Node.js Application for Production on Ubuntu 14.04