Node.js+MySQL搭建HTTP Web服务器无法被同局域网设备访问如何解决
问题排查解决步骤
第一步:确认服务监听状态
首先在运行Node服务的设备上执行对应命令,确认监听配置生效:
- Windows系统:打开cmd执行
netstat -ano | findstr 8080,查看是否有0.0.0.0:8080的监听记录 - Linux/macOS系统:执行
lsof -i:8080或者netstat -tulpn | grep 8080,确认监听地址为0.0.0.0而非127.0.0.1
你代码中的listen配置本身是正确的,绑定了0.0.0.0允许所有网卡访问,这一步主要是确认服务实际运行时监听没有异常。
第二步:排查防火墙限制
这是最常见的故障原因,系统默认防火墙会拦截外部对未放行端口的访问:
- Windows系统:
- 打开「Windows Defender防火墙」-「高级设置」-「入站规则」
- 新建规则,选择「端口」,下一步选TCP,特定本地端口填8080,下一步选择允许连接,后续步骤默认配置即可,保存后重新测试
- 临时验证可直接关闭防火墙,验证通过后记得重新开启防火墙并添加规则
- Linux系统:
- 若使用ufw管理防火墙,执行
ufw allow 8080/tcp放行端口 - 若使用firewalld管理防火墙,执行
firewall-cmd --zone=public --add-port=8080/tcp --permanent,再执行firewall-cmd --reload使配置生效
- 若使用ufw管理防火墙,执行
- macOS系统:
打开「系统设置」-「网络」-「防火墙」,点击「选项」,将Node.js程序添加到允许传入连接的列表中,也可以直接放行8080端口。
第三步:确认局域网连通性
使用同局域网的其他设备,执行ping命令测试与服务端的网络连通性:
- 执行
ping 192.168.1.117,如果出现请求超时,说明两台设备不在同一局域网,或者路由/交换机开启了设备隔离规则,需要先排查基础网络连通性。
注意:部分路由器默认开启了AP隔离功能,会阻止同一WiFi下的不同设备互相通信,需要登录路由器后台关闭该功能。
第四步:验证端口连通性
ping通的前提下,用telnet或tcping工具验证端口是否开放:
- 执行
telnet 192.168.1.117 8080,如果可以成功连接说明端口已开放,问题出在服务本身逻辑;如果连接失败说明端口仍被拦截,回到第二步排查防火墙,也可以检查是否有第三方安全软件(如360、电脑管家等)拦截了端口访问。
额外说明
你代码中的MySQL连接配置和HTTP服务监听是独立逻辑,MySQL连接异常只会影响数据库相关业务,不会导致HTTP服务无法访问,排查阶段可以暂时不用调整MySQL配置,优先排查HTTP服务的网络连通性即可。
内容的提问来源于stack exchange,提问作者Kindth
相关产品推荐
相关产品推荐

