1. 代理
代理也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。
例如:一些网关、路由器等网络设备都具备网络代理的功能。
代理服务有利于保障网络终端的隐私或者安全,可以在一定程度上阻止网络攻击(因为通过代理,可以隐藏真正的服务器端/客户端)
2. 正向代理
正向代理时,由客户端发送对某一个目标服务器的请求,代理服务器在中间将请求转发给该目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
在使用正向代理时,客户端需要配置代理服务的IP地址、端口号、以及相关的账号密码。
2.1正向代理的过程:
- 搭建一个属于客户端的代理服务器
- 客户端发送请求到代理服务器
- 代理服务器发送请求到目标服务器 (在目标服务器看来他的服务对象就是代理服务器,隐藏了客户端的存在)
- 目标服务器将数据返回到代理服务器
- 代理服务器再将数据返回给客户端
如上图所示:客户端:actor 正向代理服务器:服务器A
目标服务器:服务器C
2.2正向代理的用途:
隐藏客户端的地址:对于目标服务器而言,代理服务器代表了客户端,所以在服务器上,看不到原始客户端的IP地址和端口号
客户端访问控制:可以集中部署访问策略在代理服务器上,限制客户端的访问行为,记录客户端访问记录。
提高网络利用率:代理服务器可以设置一个资源缓冲区,当转发请求服务器的信息给客户端时,同时也将其保存到缓冲区中作为备份,当其他的客户端发出访问时, 先在资源缓冲区查找,如果有相同资源,则直接由缓冲区中取出资源,传给客户端,提高了网络利用率,减少代理服务器对同一资源的重复访问。
3.反向代理
服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。
3.1反向代理的过程:
- 客户端发送请求到目标服务器(访问的其实是反向代理服务器,但用户不知道)
- 反向代理服务器发送请求到真正的目标服务器
- 真正的目标服务器将数据返回给反向代理服务器
- 反向代理服务器再将数据返回给客户端
如上图所示:客户端:local 反向代理服务器:www.baidu.com
目标服务器:server1,server2,server3等组成的集群
3.2反向代理的用途:
负载均衡:如果服务器集群中有负荷较高者,反向代理服务器通过URL重写,根据连线请求从负荷较低者获取所需相同的资源。可以有效降低服务器压力,增加服务器稳定性
隐藏服务器的地址:对于客户端而言,反向代理服务器就是服务器,从而对客户端隐藏目标服务器的IP地址和端口号。
加密/SSL加速:将SSL加密工作交由配备了SSL硬件加速器的反向代理来完成。提供缓存服务,加速客户端访问。
4.正向代理和反向代理的区别
4.1 隐藏信息的不同
正向代理隐藏了客户端的IP和端口号
反向代理隐藏了服务器的IP和端口号
4.2 对应条件不同
正向代理是1:1或者是N:1的
一个/多个客户端通过正向代理服务器访问一个服务器端
反向代理是1:1或者是1:N的
一个客户端通过反向代理服务器访问多个服务器端