1. ngrok介绍
![](https://img-blog.csdn.net/20141217235349548?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20141217235636875)
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。简单来说就是可以通过外网访问你本地的服务器。这样可以方便调试本地的后台代码,不用老是把代码上传到外网服务器如bae、sae等。
2.ngrok能做什么
![](https://img-blog.csdn.net/20141217225412415?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20141217232514015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ngrok不但提供了一个在外网能够安全的访问内网Web主机,还能捕获所有请求的http内容,方便调试,甚至还支持tcp层端口映射,不局限于某一特定的服务。支持Mac OS X,Linux,Windows平台。
通常,映射内网到外网的方法有:
- 使用路由器做端口映射或DMZ主机
- 花生壳等动态域名软件
- 自行搭建VPN,再做端口转发等
3.ngrok基本使用
从https://ngrok.com/ 下载ngrok 然后注册一个账号 获取官方分配一个密钥
使用cmd 到ngrok.exe的目录 ngrok -authtoken 密钥 -subdomain 二级域名 端口
![](https://img-blog.csdn.net/20141217233354399?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20141217233442884?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
访问http://aaa.ngrok.com就可以了 Web Interface 可以通过Web页面管理ngrok
访问https://ngrok.com/dashboard 可以管理密钥
- tcp端口转发,这意味着可以在外网ssh到本机了,当然外网端口是随机分配的。
ngrok -proto=tcp 22 - 转发到局域网其他的机器。
ngrok 192.168.0.1:80 - 绑定顶级域名(付费才可用),在dashboard中添加域名,将域名cname解析到ngrok.com即可。
ngrok -authtoken 密钥 -hostname test.sqzr.com 80
4.ngrok配置文件
默认是放在~/.ngrok。(windows为:C:\Users*.ngrok)
![](https://img-blog.csdn.net/20141217235028932?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbDYzMTA2ODI2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
-
client
:表示转发http到本机8080,同时要求验证, -
ssh
:表示支持远程访问, -
test.yaosansi.com
: 绑定了域名转发到9090
ngrok start client ssh test.dorole.com 即可快速启动这三个隧道服务。
- tcp端口转发,这意味着可以在外网ssh到本机了,当然外网端口是随机分配的。
ngrok -proto=tcp 22 - 转发到局域网其他的机器。
ngrok 192.168.0.1:80 - 绑定顶级域名(付费才可用),在dashboard中添加域名,将域名cname解析到ngrok.com即可。
ngrok -authtoken 密钥 -hostname test.sqzr.com 80
client
:表示转发http到本机8080,同时要求验证,ssh
:表示支持远程访问,test.yaosansi.com
: 绑定了域名转发到9090注明:每一个隧道的配置节点都有五个参数,proto,subdomain,auth,hostname和remote_port:
-
proto
: 指定本地地址和端口 (必填)。 -
subdomain
: 指定二级域名,如果没有配置,ngrok会默认生成一个与隧道节点一样的名字的二级域名。 -
auth
: 用于在http(s)中身份认证。 -
hostname
: 指定顶级域名。 -
remote_port
: 用于在tcp隧道中指定远程服务器端口。
-
authtoken
: 用于设置登录ngrok的授权码,可以在ngrok首页的dashboard中查看到。 -
inspect_addr
: 用于设置监听ip,比如设置为0.0.0.0:8888
意味着监听本机所有ip的8888
端口上