1.ngrok介绍
ngrok是用go语言实现的工具,ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的数据,便于后期分析和重放。可以用来建立public到localhost的tunnel,让居于内网主机上的服务可以暴露给public,俗称内网穿透。ngrok可以很便捷的协助进行服务端程序调试,尤其在进行一些Web server开发中。
官方网站:https://ngrok.com/ github网站:https://github.com/inconshreveable/ngrok
2.为什么使用ngrok
以往我们在写了web应用后,我们如果要让外网的人员访问,或者部署上线让别人看见,我们一般要一下步骤:
1.使用外网的一台服务器(可以买服务器或者租云服务器)
2.搭建网站所需要的环境
3.将项目打包部署到服务器上
过程十分麻烦,而且极其容易出现差错,但是如果使用ngrok的话,我们下载客户端后只需要配置好内网的ip地址后,使用一条命令就可以完成让外网人员访问内网服务器,并且可以自定义域名。
3.ngrok运行原理
其实ngrok有客户端ngrok和服务端ngrokd,在用户客户端发起请求时,就是这两个端起作用转发请求。
1.当服务端接收到连接,就读取映射表,判断接收的端口对应于哪一个客户端,然后向客户端转发数据.
2.客户端收到数据,读取本地映射表,判断对应哪个内网地址,向内网地址发起连接.
3.客户端和内网的服务器建立连接后,向服务端发起一个连接,作为转发通道.
4.服务端读取请求数据,并通过转发通道转发到客户端,客户端读取响应并通过转发通道返回给请求.
我们可以看到如果要转发数据,一定要ngrok客户端和服务端建立链路通道,这样就可以将请求数据转发到我们的内网服务器。
4.使用ngrok
1.进入官网上注册账号,并且登录进入
2.选择所需要开通的服务器(有免费的服务器)
3.开通隧道(协议选择自己的协议,名称可以随便写,开通的服务器给的域名,本地的ip地址加端口,验证用户名和密码不是必填)
4.添加自定义域名
5.下载客户端,输入命令 sunny clientid 隧道id
只是官方网站的使用文档地址(推荐自己去看):http://www.ngrok.cc/_book/general/http_auth.html