如何在LAN上访问NodeJS服务器?


12

我不是网络上最知识渊博的人,但是这里......

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

我也将在NodeJS旁边运行apache,只要它连接到同一个网络,我就可以通过输入192.168.0.3http://joel-pc/浏览器的地址栏来访问它。

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

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


2
如果仅作为测试,您关闭防火墙怎么办?
cheesemacfly 2013年

1
如果我关闭防火墙,我可以完美地访问节点,谢谢:)但是肯定必须有更安全的做事方式吗?
Joel Murphy

1
我现在把它放回去了,别担心:)我也应该在那里发帖吗?还是有办法解决我的问题?谢谢你
Joel Murphy

2
干杯。我也标记了它,因为我在另一个线程中读到它需要被一个主持人采取行动之前被3个用户标记
Joel Murphy

2
我提出的旗帜被认为是有帮助的,所以不确定它需要多长时间!
cheesemacfly 2013年

Answers:


10

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


3
如果我这样做,我仍然无法访问LAN上任何其他设备上的节点。我的代码看起来像这样: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');
Joel Murphy

2
这适用于我的情况。在一些无线网络上localhost作为字符串工作,但在其他无线网络中你必须键入它127.0.0.1
Raul Rene


3

首先,您需要添加C:\Program Files (x86)\node到防火墙中的受信任应用程序列表。

然后,在您的节点应用程序中,您可以编写:

listen(3333, '172.24.14.26', function() {

要么:

listen(3333, '0.0.0.0', function() {

要么:

listen(3333, function() {

要么:

listen(80, '172.24.14.26', function() {

要么:

listen(80, '0.0.0.0', function() {

要么:

listen(80, function() {

这6种组合中的每一种都适用于我的情况:Windows Server 2016上的node.js,受公司代理保护。


3

我找到了解决这个问题的好方法。我没有使用所有配置(设置防火墙,转发端口等),而是使用localtunnel,它是一个通过Internet公开本地节点服务器的实用程序。您可以将其用于开发,测试,共享目的,只是不要将其用于生产。

首先,您必须安装localtunnel,如下所示:

$npm install -g localtunnel

然后配置节点应用程序,使节点服务器应在localhost上运行。例如:

server.listen(3000, function () {
console.log('Listening to port:  ' + port);
});

记下your_port,在我的情况下是3000,并启动你的节点服务器。

打开另一个终端并键入以下命令以运行localtunnel。

$lt --port 3000

在此之后,在终端中,您将获得一个URL,您可以将其用于开发/测试目的。此URL将在Internet上提供,因此您也可以与其他人共享。只要您的localtunnel正在运行,其他人就可以访问您的本地节点服务器。

有关更多配置选项/帮助,您可以查看文档:https//www.npmjs.com/package/localtunnel


2

以下操作在Windows PC上为我工作。试试这个:打开

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.