Ngrok(https://ngrok.com/)应该允许您通过转发向世界范围的Web公开本地端口和服务。但是如果我在本地机器上打开端口80,就像这样:
ngrok 80
我回来了:
Tunnel Status online
Version 1.3/1.3
Forwarding http://3a4bfceb.ngrok.com -> 127.0.0.1:80
Forwarding https://3a4bfceb.ngrok.com -> 127.0.0.1:80
Web Interface http://127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms
据我所知,对http://3a4bfceb.ngrok.com的任何请求都将通过端口80转到我的本地计算机,但如果我坐在阻止传入流量的NAT /防火墙后面(这是一种非常常见的情况)。 ngrok是否会启动轮询请求以确定何时收到数据?
答案 0 :(得分:88)
由于ngrok隧道总是首先在客户端启动,因此它可以与服务器协商安全通道。这是解决传统防火墙配置的一个非常灵活的解决方案。
这是由客户端在内部完成的,它打开了一个长寿命的tcp连接,其中在一个物理套接字连接中创建了许多逻辑套接字。这种技术称为stream multiplexing。有了这种设置,就不需要进行任何类型的轮询,因为客户端和服务器仍然具有完全双向通信。
然后,客户端和服务器通过心跳机制保持活动状态,该机制确保连接处于打开状态并正常工作,甚至在出错或丢失/关闭连接时重新连接。
有关详情,请参阅此处:Developer Guide on github.com
答案 1 :(得分:0)
您可以创建基本的http-https-tcp隧道而无需身份验证令牌。对于自定义子域以及更多子域,您应该通过在ngrok.com上注册来获取身份验证令牌。设置完毕后,它将存储在ngrok配置中,并用于所有隧道。几种方法:
等待ngrok.authtoken(token); 等待ngrok.connect({authtoken:令牌,...});