【问题标题】:Keep a nodeJS server app to the LAN将 nodeJS 服务器应用程序保存到 LAN
【发布时间】:2018-01-18 22:48:30
【问题描述】:

我在 nodeJS 中编写了一个小应用程序,它现在侦听端口 3000 以通过多个设备访问它,使用此行:server.listen(process.env.PORT || 3000);

我对网络一无所知,我想知道我的服务器在何种级别的可访问性上使用这种代码打开。

每个人都在互联网上? 使用同一互联网提供商的邻居? 我的无线网络?

即使我错过了这里的重点,您能告诉我如何确保简单的 nodeJS 服务器应用程序访问仅限于附近的设备吗?

【问题讨论】:

    标签: node.js networking server lan


    【解决方案1】:

    您的服务器允许什么样的可访问性取决于您运行服务器的位置以及运行它的端口。

    例如,如果您在本地计算机上运行服务器,则本地网络中的任何人(连接到路由器的每个人)都可以通过 <YOUR_LOCAL_IP>:3000 访问您的服务器

    您可以通过 MacOS 上的系统偏好设置 > 网络找到您的 LAN ip。或者打开你的终端并使用arp -a

    例如,如果您在来自 Digital Ocean 等提供商的服务器上运行您的应用程序,他们会为您提供一个公共 IP。您可以通过该 ip 和运行应用程序的端口访问您的应用程序。

    Web 应用程序在端口 80 上运行,因为这是 http 的默认端口。 (如果是 https,则为 443)。例如,当您向 www.google.com 发出请求时,您实际上是向端口 80 发出请求。

    但如果您仍想在端口 3000 上运行您的应用程序,您仍然可以这样做,但您还必须指定端口。例如,如果 www.google.com 在端口 3000 上运行,wwww.google.com:3000 就可以正常工作。

    【讨论】:

    • 因此,如果我使用计算机的公共 ip(您在谷歌搜索中提示“ip”时看到的那个)运行我的服务器,那么每个人都可以访问它吗?
    • 问题是,当我运行这个:server.listen(process.env.PORT || 3000); 时,可以从公共 ip 访问服务器。如何避免这种情况?
    • 不,它不能通过公共 ip 访问。在此处阅读有关网络的信息:openbookproject.net/courses/intro2ict/networking/intro.html
    • 谢谢,我会读的。因此,即使此命令使服务器在 my_public_ip:3000 上侦听(我需要在浏览器中提示以访问资源),它也无法从我的局域网外部使用?
    • 另外,我发现你可以指定一个 ip 来收听。所以我将使用我的局域网 IP 而不是我的公共 IP(告诉我它是否不重要)以防万一:server.listen(process.env.PORT || 3000, '192.168.1.111');
    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多