默认情况下,Node.js 服务仅绑定到 localhost,导致同一局域网内的其他设备无法访问;只需显式指定监听地址为 0.0.0.0 即可使服务对外可见。
默认情况下,node.js 服务仅绑定到 localhost,导致同一局域网内的其他设备无法访问;只需显式指定监听地址为 `0.0.0.0` 即可使服务对外可见。
要让 Node.js 应用在局域网(LAN)中被其他设备(如手机、笔记本、另一台 Ubuntu 或 Windows 电脑)访问,关键在于正确配置服务器监听地址。你当前的代码:
httpServer.listen(portNumber, function(){ console.log('listening on port:: ' + portNumber) })
未指定 host 参数,因此 Express/HTTP 服务器默认绑定到 localhost(即 127.0.0.1),该地址仅允许本机回环访问,外部设备自然无法连接。
✅ 正确做法是显式将服务绑定到 0.0.0.0,表示监听本机所有 IPv4 网络接口:
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
const portNumber = 8080;
const host = '0.0.0.0'; // ← 关键:允许局域网访问
let app = express();
app.use(express.static(__dirname + '/public'));
app.get('/', (req, res) => {
res.sendFile(__dirname + '/public/stocks.html');
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
let httpServer = http.createServer(app);
httpServer.listen(portNumber, host, () => {
console.log(`✅ Server running at http://${getLocalIP()}:${portNumber}`);
});
// 辅助函数:获取本机局域网 IP(便于调试)
function getLocalIP() {
const interfaces = require('os').networkInterfaces();
for (let iface of Object.values(interfaces)) {
for (let addr of iface) {
if (addr.family === 'IPv4' && !addr.internal) {
return addr.address;
}
}
}
return 'localhost';
}
? 重要注意事项:
- ? 系统防火墙需放行端口:Ubuntu 默认启用 ufw,运行以下命令开放 8080 端口:
sudo ufw allow 8080 sudo ufw status verbose # 确认规则已生效
- ? 无需修改路由器防火墙(如 AT&T 管理页):局域网设备间通信不经过公网防火墙,AT&T 的“网络配置”页面仅管控外网入站流量,对 LAN 访问无影响。
- ? 访问方式:其他设备浏览器中输入 http://:8080,例如 http://192.168.1.12:8080(可通过 ip a 或 hostname -I 查看本机 IP)。
- ⚠️ 避免绑定 127.0.0.1 或 localhost —— 这会再次限制为仅本机可访问。
- ? 不建议在生产环境直接暴露开发服务器;若需长期稳定服务,请配合 Nginx 反向代理 + HTTPS + 访问控制。
完成上述配置后,重启应用,即可实现真正的局域网共享访问。










