ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。
反向代理在计算机网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。
介绍
与前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址;而反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。客户端借由前向代理可以间接访问很多不同互联网服务器(集群)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器
反向代理在现时的互联网中并不少见,而另一些例子,像是CDN、SNI代理等,是反向代理结合DNS的一类延伸应用。
为什么要使用ngrok?
作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试等等,通常我们会这么做:
-
找到一台运行于外网的Web服务器
-
服务器上有网站所需要的环境,否则自行搭建
-
将网站部署到服务器上
-
调试结束后,再将网站从服务器上删除
只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯
有了ngrok之后,世界是如此的美好
-
首先注册并下载ngrok,得到一串授权码
-
运行命令ngrok -authtoken 你的授权码 80,80是你本地Web服务的端口,而之后ngrok会记住你的授权码,直接ngrok 80就OK了
-
你会得到一串网址,通过这个网址就可以访问你本地的Web服务了
获取ngrok
ngrok官网
ngrok 是一个开源程序,官网服务在国外,国内访问国外速度慢.
国内有相应的ngrok服务 natapp,frp,nat123端口映射,内网通 等。
功能
反向代理的主要作用为:
-
对客户端隐藏服务器(集群)的IP地址
-
安全:作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
-
为后端服务器(集群)统一提供加密和SSL加速(如SSL终端代理)
-
负载均衡,若服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援
-
对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
-
对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务
-
减速上传
-
为在私有网络下(如局域网)的服务器集群提供NAT穿透及外网发布服务
-
提供HTTP访问认证
-
突破互联网封锁(不常用,因为反向代理与客户端之间的连线不一定是加密连线,非加密连线仍有遭内容审查进而遭封禁的风险;此外面对针对域名的关键字过滤、DNS缓存污染/投毒攻击乃至深度数据包检测也无能为力)
常见反向代理软件
-
Nginx、Tengine
-
Apache HTTP Server
-
Varnish cache
-
Squid Cache
-
Traffic Server
-
HAProxy
-
YXORP
-
Polipo
-
Privoxy
-
IIS