反向代理和内网穿透

更新日期: 2019-02-24阅读: 5.6k标签: 代理

概念

反向代理看上去看深奥,其实不然,只是因为汉语言文化的差异导致它看上去深奥。一般反派感觉都比较厉害和神秘。

要理解反向代理,我们就不得不说一下正向代理。


正向代理 (Forward Proxy)

所谓正向代理,就是大家通常说的代理。打个通俗的比方,你想跟你舅舅借钱,但不好开口(或者你舅妈会设法阻拦),就跟你妈说。这时母亲大人就是个正向代理。此时代理本质就是个桥的作用,这个桥让你能和桥对面的人交换信息。

正向代理是多对一的概念,例如你姐,你妹你可以通过你妈去跟舅舅借钱,但舅舅只有一个舅舅。舅舅有可能并不知道到底是谁真正在借钱,只知道钱给了你妈。


反向代理 (Reserve Proxy)

大家都有打客服电话的经历,比如10086,一般上来就是个语音系统,转接人工服务后嘟嘟嘟好几声才有人接听,说我是工号xxx,很高兴为你服务。这个客服总机号码10086就是个反向代理,

反向代理隐藏了真实的服务端,有可能有N个客服对应N个号码,但你只需要记一个10086,它会平衡客服之间的压力给你安排合适的人。

反向代理是一对多的概念,刚好和正向代理反过来了。

  • 正向代理代理的对象是客户端
  • 反向代理代理的对象是服务端

反向代理最常见的作用就是负载均衡。比如你访问baidu的域名后,baidu会根据你的ip地址和网络情况给你分配最快的服务器,这个分配服务器的服务器就是反向代理。

反向代理还有一个场景就是内网穿透,因为服务对象是在内网里,你需要通过代理才能访问到。


内网穿透

从外网是没办法直接访问到内网的资源的,因为内网是一个局域网不在一个网段,而且还有防火墙在。

1550826381553

这时候你弄个反向代理就可以解决这个问题:

  • 内网服务器访问代理服务器
  • 握手,建立通道
  • 外网用户访问代理,代理通过通道和内网通信

1550848043738

举一个具体例子,TeamViewer的服务端(外网)就是个反向代理,它需要和TeamViewer客户端(内网)一直保持通信,建立一个通道(TeamViewer ID)。当远程连接这台机器时,你需要登录到TeamViewer服务器,然后通过代理通道(TeamViewer ID)和远程机器连接。


一些反向代理服务

远程连接内网机器的桌面服务是最常见的需求,有时候我们希望做的是自己的机器上跑一些服务能够从外网访问,比如demo,博客,甚至私有云等等。

TeamViewer和向日葵大家可能都知道,我说一些不一样的。


frp

开源界最流行的反向代理之一,frp全称FaskReverseProxy,它的目标是做最快速可靠的反向代理,用GO语言实现,在Github上正在快速迭代中。安装和配置都非常简单,只需要几个命令就可以完成。frp支持的客户端非常丰富,树莓派,路由器,安卓手机等等,可玩性很高。

frp服务可以让你本地的web项目提供给外网访问,特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发)。

FRP还可以轻松代理TCP,HTTPS,SSH等等协议,你需要有一台具有公网IP的机器,最好加一个域名。


ngrok

曾经是开源界反向代理软件的老大,到2.0以后选择闭源,最后开源的版本2016年后就没有再更新,止于1.7。基于C语言实现,配置略复杂,不过据说灵活性和稳定性超好。

ngrok也可以代理常见的各种协议,自己搭建只能用早期的开源版本。或者选择商业公司提供的收费服务,国内外可以搜到很多提供NGROK服务的网站,可不可靠不太敢说,但真的很多。

这里列举一些知乎推荐过的,你也可以通过ngrok这个关键字搜索到很多。

  • natapp.cn
  • 小米球
  • Sunny-Ngrok
  • echosite


dog-tunnel

翻译过来就是狗洞吧,国人做的,基于GO语言开发,在GitHub上活跃度还不错,有1k+的星星,有兴趣可以试一下。


serveo.net

无需注册,无需配置,只需要 ssh 就行,没有客户端,支持多端口映射,支持自定义子域名,只要一行代码。

ssh -R 80:localhost:3000 http://serveo.net

我试了一下,临时用一下真的很棒!


写在最后

内网服务本来就是比较敏感的,所以从数据安全的角度看我觉得还是自己搭建代理服务更可靠。用不靠谱的服务有很大风险,还有可能很坑,非常坑。

比如nat123和花生壳,一步一步诱导你付费,协议,端口,流量,速度,域名每个细节都要收费,还不一次说清楚,你付完钱才知道后面还要付钱的,别问我怎么知道的。

更多讨论,你也可以去看知乎:https://www.zhihu.com/question/49629610/

原文来自:https://betacat.online/posts/2019-02-22/reverse-proxy-and-intranet-through/


链接: https://www.fly63.com/article/detial/2105

什么是在线代理ip网页代理

当我们需要大量IP进行快节奏完成业绩的时候,很多人都会想到去IP代理服务商那里购买IP代理,所以我相信很多人对于IP代理这个词已经有一定的认识了,那么还有一个词叫做:在线代理ip网页代理

centos7下搭建高匿HTTP代理

一般适用情况:1、两台都有外网IP,一台服务器请求资源通过另外一个服务器,本文重点讲第一种。2、两台服务器,其中一台服务器只有内网IP,另外一台服务器有公网和内网IP。

.Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

公司项目最近出现获取访问域名、端口、IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数据。

反向代理Cloudflare加速网站(SNIproxy)

写在教程前:为什么要反向代理cloudflare?答:缩短路由,加快cloudflare节点到大陆用户的速度,用过cloudflare的用户应该知道,这家CDN的速度在除了大陆以外的地方访问都非常快,那么又没有什么办法使其对大陆访问良好呢?

ES6中的代理(Proxy)和反射(Reflection)

调用 new Proxy() 可常见代替其它目标 (target) 对象的代理,它虚拟化了目标,所以二者看起来功能一致。代理可拦截JS引擎内部目标的底层对象操作,这些底层操作被拦截后会触发响应特定操作的陷阱函数。

Vue多环境代理配置

多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了vue.config.js文件后提交了。第一,很容易引起冲突。 第二,很容易出现代理错误,需要排查。而且现在微服务盛行

node.js代理访问

本地开发,代理访问,防止跨域(一般通过webpack配置代理即可),特殊情况如携带一些自定义的登录cookie则需要通过自己写node,作为一种server中间层,单线程异步可以缓解服务器压力

vue proxy代理跨域

changeOrigin的属性值为一个布尔值,如果设置为true,那么本地会虚拟一个NODE服务端接收你的请求并代你发送该请求(中间件)。[本质上是本地开了一个服务器dev-server,所有的请求都通过这里转发出去。]

Nginx反向代理之动静分离

我们已经知道了什么是正向代理与反向代理,这次我们就讲一下Nginx的动静分离的案例,其实质运用的就是反向代理,专门用一台服务器代理服务器上的图片资源。

如何使用Proxy 来代理Js中的类?

Proxy 对象(Proxy)是 ES6 的一个非常酷却鲜为人知的特性。虽然这个特性存在已久,但是我还是想在本文中对其稍作解释,并用一个例子说明一下它的用法。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!