注意-这仅用于理解,我不打算永久托管玩具webapp在我的笔记本电脑上。
这是我的困惑-我的node.js应用程序是一个Web服务器,为什么我需要另一个服务器(即由heroku、aws等提供的服务器)来托管我的应用程序? 我感觉我错过了什么...
假设你在家里使用的是一个家庭网络,那么你很可能有某种路由器/防火墙将你的家庭网络连接到互联网。默认情况下,该路由器会阻止所有对网络的传入连接(出于安全考虑)。
如果你想要的话,可以设置所谓的端口转发规则,告诉路由器你希望将任何到达 80 端口(这是浏览器默认的 HTTP 端口)的传入连接直接路由到你家庭网络中的 MacBook Pro 上。通常,你需要发现在家庭网络上 MacBook Pro 的 IP 地址,并将端口转发规则设置为该 IP 地址。端口转发规则通常通过一些基于 web 的管理用户界面进行配置,你可以从 web 浏览器中使用此界面。你需要查看你特定路由器的手册以了解如何最好地连接并配置它。
除非你将 MacBook Pro 设置为具有静态 IP 地址,否则路由器会动态分配其 IP 地址。它可能会保持不变一段时间,但随着时间的推移也可能会发生变化。
完成此操作后,你需要发现你家庭网络连接的 IP 地址。这个 IP 地址也可能是动态分配的,但也应该保持一段时间不变。一旦你知道这个 IP 地址,那么外部网络上的浏览器可以通过访问 URL http://xxx.yyy.zzz
连接到你的 Web 服务器,其中 xxx.yyy.zzz
是从互联网上看到的你家庭网络的IP地址。
如果你想要使用常规域名(例如http://mysampledomain.com
)连接到它,则有一些付费的动态 DNS 服务可以将域名设置为你的动态 IP 地址,尽管这不建议用于任何长期使用。除了可能违反你的 ISP 规定外,这不是一个特别可扩展或健壮的解决方案。对于长期使用来说,更好的选择是转向托管提供者。
我需要另一个服务器(例如由heroku、aws等提供)来托管我的应用程序吗?感觉需要什么东西......这是我的困惑 - 我的 node.js 应用程序就是一个 web 服务器,为什么我需要设置端口转发呢?
你不需要另一个Web服务器。如果你要找一个托管提供商,你应该选择擅长托管Node.js服务器的提供商。在这些类型的提供商中,可能没有其他Web服务器——你的Node.js服务器将是唯一涉及的服务器。他们可能会使用代理或负载均衡器来使多租户环境运行,但你应该基本上不会意识到除了确保你遵循正确的安装说明,在他们的环境中正确地启动你的Node.js服务器之外。
104.16.34.249
,但你可能只有IPv6地址。现在,请记住,大多数家庭ISP每天都会重置你的公共IP地址。但如果您想要一个“真正的”域名,像“http://i-have-webz.com:8080/”一样拥有自己的域名,那么您接下来需要做的就是从Namecheap等人那里购买此域名,然后将您的DNS指向您的IP地址(如果它是静态的 - 也就是说,如果它不会一直变化),或者作为指向您的no-ip/dyndns(动态)主机名的别名。
下一个好步骤可能是获得适当的UPS,以及在用电不足时使用柴油发电机,从另一个不同提供商的不同回路租用另一条DSL线路(因此您可以拥有一个电缆和一个光纤线路)作为备份,或者向邻居借用无线访问权限进行此操作,实现轮询DNS等内容,将其发展成庞大的业务,然后将所有内容转移到Amazon上。
上述是处理您情况的一种高级步骤,这并不是非常完整的方式,也没有详尽地列举所有可能存在的问题。可能还有更多、更好的方法来完成许多或所有步骤。
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;
}
}
这种方法不建议长期使用,但是对于演示、测试,您可以在路由器中打开端口,另一个人(来自公共互联网)可以访问它。如果需要域名,请使用一些免费的动态DNS服务,如no-ip进行映射。 希望这能帮到您。