You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从宿主机访问VirtualBox中Linux虚拟机的Node/Express应用?

解决VirtualBox虚拟机中Node/Express应用宿主机无法访问的问题

核心问题:服务器绑定地址限制

你的代码里把服务器绑定到了127.0.0.1,这个地址是虚拟机的回环地址,只能在虚拟机内部访问,宿主机无法通过网络连接到这个地址。这就是虚拟机内可正常访问、但宿主机打不开的原因。

修复代码

把hostname的值改成0.0.0.0,这样服务器会监听虚拟机所有可用的网络接口,包括VirtualBox端口转发对应的网卡:

const http = require("http");
const express = require('express')
const cors = require('cors');

const app = express()
const server = http.createServer(app);
const hostname= '0.0.0.0'; // 修改此处
const PORT = process.env.PORT || 8080

app.use(cors())

app.get('/', (req, res) => {
  res.send('Hello World')
})

server.listen(PORT, hostname, () => {
  console.log(`Listening on ${hostname}:${PORT}`);
})

额外排查点

虽然你已配置端口转发且Apache能正常访问,仍建议确认以下内容:

  • 虚拟机防火墙是否开放了8080端口:
    • Ubuntu/Debian系统:执行sudo ufw allow 8080
    • CentOS/RHEL系统:执行sudo firewall-cmd --add-port=8080/tcp --permanent,再执行sudo firewall-cmd --reload
  • VirtualBox端口转发规则是否正确:确保宿主机端口(比如8080)转发到虚拟机的8080端口,协议选择TCP
  • 重启修改后的Node应用,确认控制台输出Listening on 0.0.0.0:8080

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:35:18