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

Node.js服务curl(7)无法连接localhost:3000的解决求助

解决VirtualBox虚拟机中Node.js服务无法通过curl访问的问题

以下是针对性的排查和修复步骤:

  • 检查Node.js服务的绑定地址
    打开hello.js,确认监听端口的代码是否绑定到0.0.0.0(允许所有IP访问)。如果代码显式指定了127.0.0.1,会限制仅本地回环访问,修改为:

    const http = require('http');
    http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(3000, '0.0.0.0', () => {
      console.log('Server running at http://0.0.0.0:3000/');
    });
    

    保存后重启服务:node hello.js。

  • 验证Node.js进程状态
    执行ps aux | grep node,确认node hello.js进程处于运行状态。如果进程不存在,检查代码是否有语法错误(比如未捕获的异常导致服务启动后崩溃)。

  • 检查端口占用情况
    执行ss -tulpn | grep :3000(或netstat -tulpn | grep :3000),查看3000端口是否被其他进程占用。若被占用,更换未使用的端口(比如3001)并重启服务。

  • 用虚拟机实际IP访问
    执行ip addr获取虚拟机的实际IP(比如192.168.1.100),尝试用该IP访问:curl http://192.168.1.100:3000。如果能通,说明localhost解析或回环配置存在异常。

  • 排查网络模式与防火墙

    1. 若从宿主机访问服务,需确保VirtualBox网络模式为桥接模式(虚拟机获取同网段IP)或配置NAT端口转发(将宿主机端口映射到虚拟机3000端口)。
    2. 彻底清空防火墙规则:执行iptables -F,关闭所有防火墙相关服务后再次尝试访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:40:18