我有一台ubuntu18机器,我在其中开发了一个Web应用程序。
web应用程序有一个前端(HTML、CSS和Javascript)和一个后端(Nodejs、python、java)。前端和后端通过websocket进行通信。后端由两个服务器组成,一个在Nodejs上运行,另一个在java上运行。
当我在本地主机上测试应用程序时,一切都很好。我想使用我的公共ip地址让互联网上的任何人访问这个应用程序。我现在没有域名。
如何使运行在我的ubuntu机器上的后端服务器可以从世界任何地方进行websocket连接??
我是这个领域的新手,非常感谢您的详细解释。
要公开计算机上本地运行的服务器,您需要允许在正确的端口上访问网络,这意味着让路由器知道当它接收到某个端口的网络流量时该怎么办,默认情况下该端口很可能是关闭的。
尽管这可能不是大型项目最安全的解决方案,但这通常是托管大多数服务器的方式,包括HTTP服务器、游戏服务器等,为了实现这一点,您必须端口转发您的路由器。
端口转发
要让路由器知道在接收到指向某个端口的流量时如何操作,您必须通过网关访问其配置。建议您在线查找特定的路由器型号,以获得快速简便的指南,但通常情况如下:
- 打开浏览器并导航到路由器的网关以访问配置页面(通常为192.168.1.1)
- 使用管理员凭据登录。如果你从未这样做过,它们可能是默认凭据,请在路由器的模型上搜索一下。此列表可能会对您有所帮助
- 导航到名为端口转发的部分,该部分通常位于高级配置或防火墙部分之下
- 您希望根据服务器侦听的端口和机器的本地IPv4地址设置新的转发规则,例如,如果您的服务器侦听端口1337,并且您的本地IP地址为192.168.1.120时,您应该同时设置TCP和UDP规则,这基本上让你的路由器知道,任何进入特定端口的流量都会被重定向到你的机器(这一步骤可能会根据路由器的制造商而有所不同)
- 最后但同样重要的是,您的本地机器应该在静态IP(192.168.1.XXX)上运行,以确保它不会自动更改。要在Ubuntu/其他发行版中做到这一点,请参阅本指南
端口转发路由器后,服务器应该可以通过您的外部IP地址使用(使用此地址可以轻松查找外部IP是什么,以及您定义的端口,例如:264.186.45.7:1337
自定义主机名
要使用自定义DNS解析程序以便为您的服务器提供自定义URL,您可以使用noip等免费工具,这些工具可以很好地选择服务器的免费主机名。你所需要的只是设置一个主机名并下载他们的客户端,该客户端会自动将你服务器的所有流量重新路由到该外部URL,所以你可能会有一个不错的主机名,比如很棒的server.ddns.net。
结论
这不是一个非常深入的指南,只是一个向外部世界公开本地服务器所需步骤的快速概述,因此每一步都需要进行一定的研究。如果你需要任何进一步的帮助或想指出什么,请随时编辑答案或在下面留言。
有一件事不需要路由器的端口转发,那就是隧道其工作方式与相同
尝试使用ngrok(https://ngrok.com/)它不需要端口转发,下载ngrok并运行ngrok.exe tcp 5001
5001是端口到端口,tcp是协议(http,tcp,..),要在线连接到它,请使用";转发";它将类似于4.tcp.ngrok.io:4869,它将转发到localhost端口5001
注意:您可以在没有帐户的情况下使用它,但它将每7小时过期一次,请查看要使用的帐户阅读https://dashboard.ngrok.com/auth/your-authtoken(创建帐户后)
有不同的npm模块可用于提供域名,并最终提供从外部访问本地服务器的能力。话虽如此,在您的本地服务器中,如果服务器停止,那么您可能需要再次生成一个新域名并在其中共享。还有其他方法可以缓解这种情况。
但我从你的问题中了解到,这就是你想要的答案。。希望这能有所帮助。