我的机器上的0.0.0.0:3000
上绑定了一个简单的网络服务器,可以在本地网络上运行。通过本地网络,我的意思是说,如果我的移动设备或任何其他设备在同一网络上,它可以通过转到分配给我的机器的IP并向其添加端口3000来访问本地网络服务器。例如192.168.1.4:3000
。
现在我要将它暴露给互联网,但不是通过某种第三方应用程序,如ngrok,localtunnel或browserSync。我知道这些应用程序运行良好,但由于我自己的控制家用电器的宠物项目,我不想依赖第三方服务的可用性。所以目前的状态是,我无法通过互联网控制它。请记住,我没有静态IP,否则这会更容易。
我已经分配了一个vps和一个域名。我可以使用getifaddrs将我当前分配的IP地址(因为它是动态的)发送到我的服务器并跟踪它。但是如何通过它将本地服务器暴露给互联网呢?这些第三方应用程序为每个公开的服务器分配某种子域,我也可以分配子域,但我仍然没有办法公开本地Web服务器。任何帮助将不胜感激,谢谢你。)
答案 0 :(得分:2)
第一步,您需要在互联网接入路由器上公开您的网络服务器。 通常,这需要您为(在您的情况下)端口3000配置端口转发。 完成此操作后,任何客户端都可以通过(当前外部动态IP):3000
访问您的服务第二步,您需要将固定的DNS名称动态映射到当前的动态IP。当然还有第三方服务(例如DynDNS)可以帮助您将yourfavoritename.dyndns.org映射到不断变化的IP地址。
如果你想在没有第三方的情况下做后者,你需要在某处拥有某些静态(网络)服务器,并且可以按照以下步骤进行:
客户端访问http://www.yourstaticserver.example/并且该服务器将它们重定向到(当前动态IP):3000。 当然,为了实现这一点,您的静态服务器需要知道动态IP并且不需要了解它的变化。 为此,您可以让内部服务器定期(例如每分钟一次)联系静态服务器,比如让它访问http://www.yourstaticserver.example/some-secret-special-page,静态服务器始终存储此类请求的REMOTE_ADDR(最好是有一些授权!)用于未来的重定向。
实际上,在第一步之前有一个零步骤:请注意,将服务器暴露给Internet意味着将服务器暴露给Internet。所以我希望你在安全方面投入足够的思想。