【问题标题】:How do ports work in Node.js when on the server?在服务器上时,端口如何在 Node.js 中工作?
【发布时间】:2017-10-20 18:49:04
【问题描述】:

我目前正在本地开发一个节点服务器,为了访问它,我让服务器在 8080 上侦听,然后在浏览器中转到 localhost:8080。但是,当我将此项目放到互联网上时,端口将如何工作?

【问题讨论】:

  • 与本地相同。如果你在本地的 80 端口运行你的服务器,那么它将在 localhost 打开,它将充当互联网上的站点

标签: node.js localhost port


【解决方案1】:

一旦你“把它放到互联网上”,它的工作原理就会完全一样。浏览器仍然会向一个端口(最有可能是互联网上的 80 或 443)发出请求,但它可能会通过互联网而不是localhost 访问网络服务器。

如果您想了解如何将节点项目部署到服务器,请查看this guide。基本上你需要在节点前面设置一个代理来处理所有服务器的东西,比如请求和 ssl 证书。

【讨论】:

    【解决方案2】:

    我假设您的意思是 为您的 node.js 程序提供服务 并通过 将此项目放到互联网上 将您的 localhost 端口代理到互联网。一个简短的回答是,您永远不会在 Internet 上的某个端口上托管您的 API,而是将您的本地端口暴露给 Internet 端口。

    我相信你已经知道如何稳定地为 node.js 程序提供服务。如果没有,我真的推荐pm2

    如果您想将您的 API 公开到 Internet,您首先必须为您的本地网络获取一个 IP,以便其他人可以通过该 IP 访问您的网络。您还可以将其与域相关联。然后使用IPfire之类的软件来管理端口映射。例如,您可以将yourIP:8080 映射到IP ofLocalhostAtLocalNetwork:8080。然后,人们可以通过yourIP:8080 访问您的 API。或者您可以简单地将yourIP:80 映射到IPofLocalhostAtLocalNetwork:8080,以便人们可以通过您的 IP 直接访问您的 API。

    另一个非常流行的服务器和代理服务工具是nginx。使用 Nginx,您可以轻松地提供一些服务并将任何端口代理到任何服务。

    【讨论】:

      【解决方案3】:

      当您的代码从服务器运行时,您需要访问全局变量“process.env”来动态确定端口号。 The process.env property returns an object containing the user environment.

      您可以执行以下操作来动态满足本地和服务器环境:

      //set port and ip
      app.set("port", process.env.PORT || 8080);
      app.set("ip", process.env.IP || "0.0.0.0");
      
      app.listen(app.get("port"), app.get("ip"), function (err) {
          if (err) {
              console.error(err);
              return;
          } else {
              console.info("cicak is running on port " + app.get("port") + ".");
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 2013-09-13
        • 2015-04-26
        • 2013-10-18
        • 1970-01-01
        • 2016-01-16
        • 2013-06-05
        • 2016-01-17
        • 2016-10-11
        相关资源
        最近更新 更多