ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全通道。
实际上最主要的作用在于内网穿透。当我们离开公司或者机器部署在远程。机器出现问题时,我们需要访问设备的WEB网页或者设备后台,则需要ngrok在公网与远程内网之间建立一条隧道,从而使我们可以直接远程控制设备,从而抓取日志。
如图所示,这是ngrok的结构图。
-
控制隧道负责连接云平台的ngrok服务器,进行相关认证以及解析平台返回的认证信息。
-
远程隧道负责连接云平台获取代理地址与端口。
-
本地隧道负责连接需要代理的本地服务器,监听相应端口(监听TCP连接)的信息,从而获取本地的WEB或者SSH消息。
从图中可以看出ngrok实际上只是做一个数据转发,数据通道是远程隧道与本地隧道。因此最主要的部分在于本地隧道获取信息,然后写入远程隧道,远程隧道发送给ngrok服务器。从而客户可以获取到相应信息。客户配置时向下流程一致。