正向代理和反向代理区别图例

什么是代理,一个代理过程涉及三个角色: 代理对象、被代理对象、目标对象,三个角色关系如下:

被代理对象委托代理对象访问目标对象

以打官司为例,张三想要打官司于是请了李四律师帮忙打官司,那么张三就是被代理对象,不用亲自打官司,而是委托代理对象李四律师;李四律师就是代理对象,代理张三打官司事务;而目标对象就是打官司。

正向代理

假设我们需要访问国外的网站比如Google,此时可能通过国内的浏览器是如何直接访问Google的,此时假设有一台服务器可以访问Google,并且国内的客户端可以访问这台服务器,那么就可以将这台服务器叫做正向代理服务器。
国内客户端将请求发送给代理服务器,代理服务器再将请求发送给Google,此时就完成了一次正向代理的过程。
如下图示:
正向代理和反向代理区别图例

可以发现正向代理有几个特点:

1、客户端明确知道要访问的具体服务器地址

2、目标服务器不知道客户端信息,只知道所有请求都是由代理服务器发送过来的。

3、客户端需要配置代理服务器信息

所以正向代理代表的是客户端,代客户端发送请求。客户端将请求发送给代理服务器,代理服务器将请求转发给目标服务器,目标服务器将请求结果返回给代理服务器,代理服务器再将结果返回给客户端。

正向代理的用途

1、访问原本无法访问或不想直接访问的资源,比如访问国外资源等;

2、缓存,代理服务器可以将目标服务器的资源进行缓存,这样客户端可以直接从代理服务器获取缓存数据;

3、管控客户端行为,记录客户端请求日志等;

反向代理

以淘宝为例,为了应付高并发请求,淘宝服务器会采用集群的方式部署服务器,这样客户端就不知道将请求发送到哪一台服务器,假设有一台服务器可以根据规则来将客户端请求进行转发,那么就可以将这台服务器叫做反向代理服务器。
客户端将请求发送给代理服务器,服务器根据转发策略,选取一台服务器进行转发,这样就完成了一个反向代理的过程。
如下图示:
正向代理和反向代理区别图例
可以发现反向代理有几个特点:

1、客户端并不知道要访问的具体服务器地址,具体服务器地址是由代理服务器选择的。
2、客户端并不需要配置代理服务器信息,代理服务器对于客户端而言是透明的
3、目标服务器是知道请求是由哪个客户端请求过来的

所以反向代理代表的是服务器,代服务器接收请求,客户端将请求发送给代理服务器,代理服务器将请求转发给目标服务器,目标服务器将请求结果返回给代理服务器,代理服务器再将结果返回个客户端。

反向代理的用途

1、保护服务器安全,服务器内网部署即可,而只需要将代理服务器暴露到外网
2、负载均衡,通过代理服务器来根据负载均衡策略维护服务器的请求数

总结

正向代理代理的是客户端发送请求,客户端和代理服务器处于同一个网络环境,隐藏了客户端信息
正向代理主要作用是访问不可访问的资源和统一管控客户端请求
反向代理代理的是服务器接收请求,服务器和代理服务器处于同一个网络环境,隐藏了服务器信息
反向代理主要作用是保护内网服务器和负载路由转发
本质上正向代理和反向代理都是处于客户端和服务器之间的角色,客户端都是将请求给代理,代理将请求转发给服务器的过程。而实际应用场景中,往往可能是同时存在正向代理和反向代理的,如下图示:

正向代理和反向代理区别图例
滚动至顶部