Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我的计算机上托管节点应用程序_Javascript_Node.js_Deployment - Fatal编程技术网

Javascript 在我的计算机上托管节点应用程序

Javascript 在我的计算机上托管节点应用程序,javascript,node.js,deployment,Javascript,Node.js,Deployment,所以我有一个节点应用程序,可以通过localhost访问:someportnumber。如何仅使用我的计算机而不是某种托管服务公开此应用程序(即向interwebz的其他部分公开,而不仅仅是向我的本地网络公开)。这台机器是macbook pro,不确定它是否重要 注意-这纯粹是为了理解,我不想在我的笔记本电脑上永久地托管一个玩具webapp 这是我的困惑-我的node.js应用程序是一个web服务器,为什么我需要另一个服务器(即heroku、aws等提供的服务器)来托管我的应用程序?我觉得我错过

所以我有一个节点应用程序,可以通过localhost访问:someportnumber。如何仅使用我的计算机而不是某种托管服务公开此应用程序(即向interwebz的其他部分公开,而不仅仅是向我的本地网络公开)。这台机器是macbook pro,不确定它是否重要

注意-这纯粹是为了理解,我不想在我的笔记本电脑上永久地托管一个玩具webapp


这是我的困惑-我的node.js应用程序是一个web服务器,为什么我需要另一个服务器(即heroku、aws等提供的服务器)来托管我的应用程序?我觉得我错过了一些东西…

这种方式不建议永久使用,但对于演示,测试您可以在路由器中打开端口,另一个(从公共互联网)可以访问它。如果您需要一个域,请使用一些动态DNS免费服务,如无ip映射到域。
希望这能对您有所帮助。

假设这是一个家庭网络,那么您可能有某种路由器/防火墙将您的家庭网络连接到internet。默认情况下,路由器会阻止所有到网络的传入连接(出于安全原因)

如果需要,您可以设置所谓的端口转发规则,告诉路由器您希望将端口80(浏览器的默认http端口)上的任何传入连接直接路由到家庭网络上的macbook pro。通常,您可以通过发现macbook pro在家庭网络上时的IP地址来实现这一点,并设置该IP地址的端口转发规则。端口转发规则通常通过某种基于web的管理用户界面进行配置,您可以从web浏览器使用该界面。您必须查看特定路由器的手册,以了解如何最好地连接和配置路由器

除非您将macbook pro设置为具有静态IP地址,否则其IP地址将由路由器动态分配。它可能会保持不变一段时间,但会随着时间的推移而改变

完成此操作后,您需要发现家庭web连接的IP地址。这也可能是动态分配的,但也应该保持不变一段时间。如果您知道此IP地址,则Internet上的浏览器可以通过URL
连接到您的web服务器http://xxx.yyy.zzz
其中
xxx.yyy.zzz
是从互联网络中看到的家庭网络的IP地址

如果您希望能够使用普通域名(如
http://mysampledomain.com
,则您可以付费购买一些动态DNS服务,这些服务将为您的动态IP地址设置域,但不建议长期使用。除了可能违反ISP的规则之外,它不是一个特别可扩展或健壮的解决方案。从长远来看,转向主机提供商更有意义

这是我的困惑——我的node.js应用程序是一个Web服务器,为什么我要这样做 需要另一台服务器(即heroku、aws等提供的服务器)来承载我的 应用程序?我觉得我错过了什么


您不需要另一个web服务器。如果您要找到一个托管提供商,您将使用一个擅长托管node.js服务器的托管提供商。有了这些类型的提供者,可能就不会有另一个web服务器了——您的node.js服务器将是唯一涉及的服务器。他们可能有代理或负载平衡器,用于使多租户环境正常工作,但是,除了确保按照正确的安装说明安装node.js服务器并在其环境中正常运行之外,您应该基本上不知道这些问题。

您可以使用nginx并将nginx代理上的配置添加到您的node js 这是使用nginx配置的示例

server {
 listen 80;

server_name example.com;

location / {
    proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
 }
}

你不需要一台服务器来托管应用程序——你需要一台可以通过互联网访问的服务器。有很多方法可以做到这一点

要访问您的Web服务器应用程序,我需要知道您计算机的IP地址。假设您可以向我提供您的公共IP地址(请在中查找此地址,将地址提供给我,并告诉我要连接到哪个端口)

stackoverflow的IP地址是
104.16.34.249
,但无论如何,您可能只有IPv6地址。现在,请记住,大多数家庭ISP每天都有重置公共IP地址的习惯

接下来,你给我你的应用程序端口,例如8080

所以我会尝试获取(或者,取决于你的应用程序)

但是,在大多数情况下,我会不点击任何东西或点击你的路由器。这是第2步:告诉你的路由器将这个端口上的流量传递到你的计算机上。你可以有一个简单的端口转发配置,或者例如,将计算机放入DMZ(如何做这一切是另一个问题,可能是服务器故障或超级用户)

现在我可以从interwebz访问你的应用程序了

但是你可能想让我使用一些固定的名称,而不是不断变化的IP地址。因此,你注册一个像DynDNS或NoIP这样的服务,并在你的计算机或路由器上安装他们的小代码片段,他们会给你一个类似于家庭主机名的东西,例如,或

谈谈你的比赛,嗯

但是如果你想要一个“真实”的域名,你自己的,比如“”,那该怎么办呢?好吧,你的下一步是从像name便宜这样的人那里购买这个域名,然后将你的DNS设置为指向你的IP地址(如果它是静态的,也就是说,如果它没有一直改变),或者作为你的无IP/dyndns(动态)主机名的别名

下一个好的步骤是获得一个合适的UPS,也就是一个柴油发电机,当你用完电时,从不同的供应商在不同的环路上租用另一条DSL线路(例如,你有一条电缆和一条光纤线路)为了备份,或者为了这个目的从邻居那里借用无线接入,实施循环dns技术,从中发展出巨大的业务,然后将其全部转移到亚马逊

上面描述的是高级ste