如何访问局域网上的 NodeJS 服务器?

Joe*_*phy 18 networking firewall apache-http-server port node.js

我不是有史以来最了解网络的人,但这里是......

我已经用 NodeJS 创建了一个应用程序,我想和我的家人在我的 LAN 上测试该应用程序。该应用程序在端口上侦听1337连接,我可以通过在我自己的 PC 上输入localhost:1337192.168.0.3:1337甚至http://joel-pc:1337/在我的浏览器的地址栏中很好地访问该应用程序。

我还将与 NodeJS 一起运行 apache,只要它连接到同一网络,我就可以通过在浏览器的地址栏中键入192.168.0.3http://joel-pc/进入它来访问它。

现在是奇怪的部分;如果我停止 apache 服务,将我的节点应用程序更改为侦听端口80(http) insted 1337,则可以通过在我的 PC 上键入localhost192.168.0.3甚至http://joel-pc在浏览器的地址栏中进行访问。但是,除了我自己的 PC 之外,我仍然无法在我网络上的任何其他 PC 上访问 NodeJS。

我已经尝试在 Windows 7 中创建一个出站规则以允许访问端口 1337,但我仍然无法在我自己的 PC 之外的任何其他 PC 上访问我的 NodeJS 服务器,即使它正在侦听端口 80。是否有明显的问题我在这里错过了吗?

Pet*_*ons 13

很可能您的节点应用程序绑定到环回 IP 地址127.0.0.1而不是“所有 IP”,0.0.0.0因为这是listen. 在您的呼叫中指定端口和 IP,server.listen(80, '0.0.0.0');然后重试。

  • 如果这样做,我仍然无法访问 LAN 上任何其他设备上的 Node。我的代码看起来像这样:var io = require('socket.io'); var express = require("express"); var app = express(); var server = require('http').createServer(app) io = io.listen('80', '0.0.0.0'); (3认同)
  • 这在我的情况下有效。在某些无线网络上,“localhost”作为字符串工作,但在其他网络中,您必须将其键入为“127.0.0.1” (2认同)

小智 6

获取您当前的本地网络 IP,并像这样运行 http 服务器:

server.listen(80, 'current_local_ip');
Run Code Online (Sandbox Code Playgroud)


小智 5

在 Windows PC 上执行以下操作对我有用。试试这个:打开

控制面板\系统和安全\Windows Defender 防火墙\允许的应用程序

接下来在列表中查找 node.js,然后单击“更改设置”>“确保选中私有访问”,然后单击“确定”。