在前端开发中,你必须要明白的代理那些事儿

代理技术如何实现

一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。
常用的代理技术分为正向代理反向代理透明代理

正向代理

一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:

正向代理是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端需要设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口,才能使用正向代理。如下图所示:

正向代理.png

从上面的概念中,我们看出,文中所谓的正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B】。很好的体现了正向代理的应用,其中之一就是科学上网,当然还有前端常用的抓包工具Whistle

Whistle其实就是将开发用的PC变为代理服务器,当移动端设备设置好代理用的PC的IP代理服务端口号之后,移动端设备所有的请求和服务端响应的数据,都要经过Whistle代理服务,因此前端开发者们,可以在PC上观察接口的响应情况。

反向代理

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

反向代理.png

那反向代理的作用是什么呢?主要有以下两个方面:
1、保护和隐藏原始服务器;
2、负载均衡
负载均衡.png

总结

1、正向代理需要客户端进行配置(配置代理服务器的ip和端口),反向代理需要服务端进行配置;
2、正向代理,对于原始服务器来说,不知道请求的真正用户是谁;
3、反向代理,对于用户来说,不知道原始服务器到底隐藏在哪里。



以上内容其实对一位前端开发来讲,应该已经够了,以下内容是属于拓展,可以适当了解

什么是“肉鸡”?

通过前面的内容,我们可以知道正向代理,代理服务器可以替用户发出请求,从而隐藏了真实用户的信息,“肉鸡”指的就是那些完全被用户操控的代理服务器,达到了隐藏访问者行踪的目的

“肉鸡”百度词条.png

加速访问

假设用户A到服务器B,经过R1路由器和R2路由器,而R1到R2路由器的链路是一个低带宽链路。而用户A到代理服务器Z,从代理服务器Z到服务器B都是高带宽链路。那么很显然就可以加速访问服务器B了。

Cache作用

Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。
如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。
这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据。
反向代理服务器像正向代理服务器一样拥有Cache的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。
这正是CDN技术的核心。

反向代理.png

本文参考来自:https://blog.51cto.com/z00w00/1031287
有兴趣的朋友可以去阅读原文~

推荐阅读更多精彩内容