(定位)ngrok 是一个反向代理软件,(作用)通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。(功能)ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。
(是什么)ngrok 是一个使用go语言编写的反向代理软件。
(相关)国人自己搭建的ngrok服务器介绍:
1、Ngrok国内免费服务器——糖果科技
2、http://www.ittun.com
3、Sunny-Ngrok内网转发
4、https://natapp.cn
5、http://ngrok.2bdata.com
6、FRP内网穿透工具 (如果以上的ngrok不能使用推荐自己使用frp搭建、配置比较ngrok简单还稳定)
对于想本地开发或者想做内网穿透的话ngrok可以帮你这个忙,我们都知道在微信开发的时候,微信服务器只认80端口,这样导致我们哪怕修改一行代码都得把代码上传到服务器上面,就在传文件的时候就已经浪费了特别的时间了,而如果我们把ngrok用上的话就可以节省很多时间,因为外网完全可以访问到内网的web服务器上,哪怕是你自己的电脑。
也就是说,ngrok是搭建一个安全通道,让不仅仅是自己的电脑可以访问到外网,同时也可以让外网可以直接访问我的本机的web服务器上。
我之前也做过《如何通过SocketLog进行web和微信开发调试》的教程,如果把ngrok和SocketLog搭配起来用的话,我们调试起来就更方便了,除了做微信之外,我们在做支付功能的时候,处理异步回调也很麻烦,也得把文件上传到服务器上面去,可我们同样的使用ngrok和SocketLog结合起来用,我们可以不上传代码,也还可以通过浏览器console来查看处理的过程,快速的帮助我们排查错误。
作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试等等,通常我们会这么做:
找到一台运行于外网的Web服务器(阿里云)
服务器上有网站所需要的环境,否则自行搭建(环境搭建)
将网站部署到服务器上(部署网站)
调试结束后,再将网站从服务器上删除(删除网站)
只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯
首先注册并下载ngrok,得到一串授权码(下载)
运行命令ngrok -authtoken 你的授权码 80,80是你本地Web服务的端口,而之后ngrok会记住你的授权码,直接ngrok 80就OK了
你会得到一串网址,通过这个网址就可以访问你本地的Web服务了
也就是说,当我有了ngrok之后,我可以不用买服务器了,还可以通过网址进行访问(域名)不需要进行备案。其中关键的步骤就是就是第二点,运行。
ngrok官网 ngrok 是一个开源程序,官网服务器在国外,国内访问国外速度慢.
国内有相应的ngrok服务 natapp,frp,nat123端口映射,内网通 等。
在官方网站上面可以注册一个账号自己使用,不需要自己搭建也行,但是缺点就是速度慢,还有经常会连不上,所以我们可以通过自己搭建来解决这些问题。
1、一台拥有公网ip的服务器或者vps
2、把主域名解析到服务器上
比如:ngrok.javen.com
go的下载地址:http://www.golangtc.com/download(需要使用1.4.2)
git的下载地址:http://git-scm.com/downloads
绝对下载地址:https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
ngrok克隆地址:https://github.com/inconshreveable/ngrok.git
超级细的ngrok配置、安装操作博文 http://www.sunnyos.com/article-show-48.html
(无效链接,尊重原文) http://www.cnblogs.com/pwenlee/p/5302880.html
CSDN博客,很完整 http://blog.csdn.net/u013216667/article/details/50782084
超级细的ngrok配置、安装操作博文 http://www.sunnyos.com/article-show-48.html
摘选:CSDN博客,很完整 http://blog.csdn.net/u013216667/article/details/50782084
编写一个ngrok.cfg,内容如下:
server_addr: "tunnel.mobi:44433"
trust_host_root_certs: true
用ngrok最新客户端1.7版本执行如下命令:
$ngrok -subdomain tonybaiexample -config=ngrok.cfg 80
可以顺利建立一个tunnel,用于本机向外部提供"tonybaiexample.tunnel.mobi"服务。
Tunnel Status online
Version 1.7/1.7
Forwarding http://tonybaiexample.tunnel.mobi -> 127.0.0.1:80
Forwarding https://tonybaiexample.tunnel.mobi -> 127.0.0.1:80
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms
而且国内的ngrok服务显然要远远快于ngrok.com提供的服务,消息瞬间即达。
但这是在公网上直接访问的结果。放在公司内部,我看到的却是另外一个结果:
Tunnel Status reconnecting
Version 1.7/
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms
reconnecting 重新连接
我们无法从内网建立tunnel,意味着依旧不方便和低效,因为很多基础服务都在内网部署,内外网之间的交互十分不便。但内网连不上tunnel.mobi也是个事实,且无法知道原因,因为看不到server端的连接错误日志。
做到这里,发现想要实现我想要的,还是不能不能够绕过域名,而且创建ngrok服务器的操作对现在的我来说略显复杂,而且学到这里,我已经发现我想要解决的问题,直接其实可以较为简单的实现。以后有机会再补上我自己的ngrok的服务器搭建
http://blog.csdn.net/u013216667/article/details/50782084
如果你只是需要获取一个子域名,并且能从外网访问到你自己的web项目,那么你就不需要自己搭建ngrok服务器,,服务器的搭建,需要有备过案的域名,应该需要一段时间。只是为了实现以上需求的话,直接上www.ngrok.cc就好了,,看下教程,开个会员,完全可以实现的。本地web服务器就是tomcat上面的,改下端口就好了。