直给,上干货,硬核代理解析,请拿走!
【代理】
首先我们要知道,代理是什么意思呢?
代理是一个多义词,具体含义取决于上下文。以下是代理的三种含义总结:
一、在法律领域:
代理是指代理人以被代理人(又称本人)的名义,在代理权限内与第三人(又称相对人)实施民事行为,其法律后果直接由被代理人承受的民事法律制度。
代理包括委托代理和法定代理。
委托代理是当事人聘请代理进行诉讼活动。
法定代理是根据法律规定而产生的一种代理关系,例如在未成年人案件中,法律会指定特定的代理人代表未成年人进行诉讼活动。
二、在计算机领域:
代理,泛指中间传输web服务器,充当着用户和目标服务器之间的中介。
代理(英语:Proxy)也称网络代理,是一种特殊的网络服务。
它允许一个网络终端(一般为客户端),通过这个服务,与另一个网络终端(一般为服务器)进行非直接的连接。
三、在其他领域:
代理还可以指受委托,代表当事人,进行某种活动,如诉讼、纳税、签订合同等。
【Java代理】
而在Java中的代理,是指一种设计模式,即代理模式(Proxy Pattern)。
代理模式,是23种Java常用设计模式之一。
一、定义:
对其它对象提供一种代理,用以控制对这个对象的访问。
二、作用:
代理模式的主要作用是:
为其它对象提供一种代理,以控制对这个对象的访问。
在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
三、内核:
代理模式的思想内核,是为了提供额外的处理,或者不同的操作,而在实际对象与调用者之间,插入一个代理对象。
这些额外的操作,通常需要与实际对象进行通信。
在这种模式中,代理对象充当目标对象和客户端之间的中介,可以提供额外的操作或监控功能。
四、静态代理与动态代理
代理模式,可以分为静态代理和动态代理两种。
在静态代理中,代理类和目标类在编译时就被确定,它们实现相同的接口。
在动态代理中,代理类是在运行时通过反射机制生成的,这种实现方式更灵活,可以在不修改原有代码的基础上对方法进行功能增强。
代理模式的应用场景,包括保护对象不被直接修改、增强功能或实现对象间的通信。
【正反代理】
一、正向代理
正向代理,是一种位于客户端和目标服务器之间的网络代理。
主要功能是代表客户端与目标服务器通信。
当客户端想要访问某个网站时,它会先向正向代理服务器发送请求,并指定目标网站。
然后,正向代理服务器会向目标网站发送相同的请求,并获取响应。
最后,正向代理服务器将从目标网站获得的响应数据返回给客户端。
这种代理方式可以隐藏客户端的真实身份和位置信息,使客户端能够访问通常无法直接访问的网站,例如被封锁的网站。
此外,正向代理还可以提供缓存服务,加速网络请求,并增强网络访问的安全性。
二、反向代理
反向代理,是位于用户与目标服务器之间的一种代理服务。
但它是代表目标服务器来处理请求的。
具体来说:
1、当用户发出请求时,这些请求首先会到达反向代理服务器,而不是直接发送到目标服务器。
2、反向代理会根据一定的规则(如负载均衡策略)将用户的请求转发到后端的一组或多组服务器上进行处理。
3、处理完成后,后端服务器会将结果返回给反向代理,再由反向代理将这些结果转发回给用户。
三、正向代理和反向代理的区别
1、用途不同
正向代理的典型用途是为在防火墙内的局域网客户端提供访问I的途径。反向代理的典型用途是将防火墙后面的服务器提供给I用户访问。
2、目的不同
正向代理,实际代理的是客户端。
而反向代理,实际代理的是目标服务器。
3、代理架构不同
正向代理是客户端架构,而反向代理是服务器架构。
4、服务对象不同
正向代理中,服务器不知道真正的用户是谁。
反向代理中,用户不知道真正的服务器是谁。
四、正向代理的典型VPN
VPN(Virtual Private work,虚拟专用网络)确实可以被视为一种典型的正向代理。
正向代理,是指位于客户端和原始服务器(in server)之间的服务器。
它代表客户端向原始服务器发送请求并获取内容,然后将这些内容返回给客户端。
VPN的工作原理正是如此。
它为用户的网络请求提供代理服务,使得用户可以通过VPN安全地访问各种网站和服务。
同时隐藏用户的真实IP地址,保护用户的隐私和网络安全。
五、反向代理的代表Nginx
实际上,Nginx既可以作为正向代理,也可以作为反向代理。
以下是两种代理模式的具体介绍:
1、正向代理
在这种模式下,客户端(用户)明确知道他们想要访问的数据资源位于哪个服务器上,但客户端无法直接访问那个服务器。
因此,客户端通过一个代理服务器来访问目标服务器。
代理服务器充当了客户端和目标服务器之间的中间层,负责将客户端的请求转发给目标服务器,并将目标服务器的响应返回给客户端。
2、反向代理
在这种模式下,客户端通常不知道他们正在与反向代理服务器通信,而是认为他们直接与后端服务器通信。
反向代理服务器接受客户端的请求,并将这些请求转发给后端服务器。
后端服务器处理请求并返回响应,反向代理服务器再将响应返回给客户端。
在这种模式下,客户端对代理是无感知的,因为客户端不需要进行任何额外的配置就可以访问。
另外,Nginx不仅支持这两种代理模式,还可以用作负载均衡器、缓存服务器和电子邮件代理服务器等。
……
以上,就是关于代理,Java中的代理,正反代理的定义、区别、典型代表的总结了。
理解它,掌握它,会让你在今后的IT程序员开发工作中,一路砍瓜切菜,所向披靡的。
So,你get到%多少了?
(——本章玩——)
(评论、关注、收藏,一键三连可好?)