相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试、支付宝接口调试等。这个时候,一个叫ngrok的神器可能会帮到你,它提供了一个能够在公网安全访问内网Web主机的工具,能捕获所有HTTP请求的内容,也支持TCP端口映射,支持Linux、Windows、Mac OS X 等平台。
我们现在就来小试下牛刀,感受下 ngrok 的好玩之处。
一、ngrok 下载
到官网下载ngrok小工具:https://ngrok.com/,工具体积很小,现在已经升级到 2.X 的版本,只支持64位操作系统,并被作者用于商业化。1.X版本的免费自定义固定二级域名功能已经开始收费,这块后面会说明。
二、ngrok 使用
以windows版本为例,把下载的压缩包解压到本机硬盘,用 DOS命令切换到 ngrok.exe 所在的目录:
好了,接下来如何使用呢?我们来通过演示几个简单样例来说明:
输入 ngrok http 8001,回车,出现如下信息:
意 思是 ,随机分配一个公网可以访问的二级域名http://49412880.ngrok.io/ 转发到我们本机的8001端口 ,这也就意味着,现在访问 http://49412880.ngrok.io/ 就如同访问内网的http://127.0.0.1:8001。
同时通过 ngrok提供的管理界面(http://127.0.0.1:4040)可以清晰的看到当前有哪些连接、请求的URL等, 是不是很方便?但是上面分配 的域名是临时且随机的,一旦本机重启或者ngrok重启后,这个域名就变化了。如何把一个固定的域名映射到本机呢? V1.X的版本是可以免费支持将一个固定的二级域名指向本机的,不过作者已经把 V2.X的版本商业化,所以固定域名的转发现在需要收费了,费用倒是不贵,有兴趣的同学可以去官网看看。
当我们的机器绑定了多个IP时,通过指定IP来转发映射:ngrok http 192.168.1.101:8006
也可以转发同一局域网内其它的主机和端口:ngrok http 192.168.4.6:8008
TCP端口转发:ngrok tcp 22
ngrok tcp 3389
这样我们可以在公网SSH到内网Linux机器,远程桌面到内网Windows机器了,当然外网端口也是临时随机的。如下图,我们已经在公网环境下远程到了内网windows机器上
怎么样,有意思吧。
三、ngrok小问题
不过需要说明一点,ngrok的访问可能会不太稳定,原因你们都懂的,指不定哪天就被墙了。