正向代理、反向代理和透明代理
代理实际上就是使客户端不直接访问目标服务器,而通过代理服务器去访问目标服务器。为什么不直接访问目标服务器呢,实际上使用代理的方式好处多多,下面就说说这几种代理方式。
1.正向代理
客户端向代理服务器发送一个请求并指定目标服务器,代理服务器接到请求后将请求转发给目标服务器,目标服务器将相应发给代理服务器,代理服务器再将响应发给客户端吧。这个过程中,着重强调是需要客户端指定目标服务器,代理服务器才能知道到底要转发给哪个目标服务器。
2.反向代理
和正向代理不同的是,客户端向代理服务器发生请求,不需要指定目标服务器,由代理服务器根据策略自行选择目标服务器。这个场景大部分出现在什么地方呢,就是服务器集群上。这里拿应用服务器集群来说,集群中的应用服务器本质上部署的应用实例是一样的,无论在哪个服务器上的都没有差别,所以不需要额外的去指定目标服务器。如果要直接去访问每台应用服务器,那么就需要用户通过不同的域名或者ip地址去访问,这样还容易造成某个服务器负载严重,而某个服务器负载闲置,所以这里客户端就可以使用反向代理的方式来访问集群的服务器。于是客户端就能通过代理服务器这一个服务器去访问集群的所有服务器了,代理服务器在转发请求的时候还能根据策略进行负载均衡,确保每台目标服务器都能有合理的负载。
3.透明代理
听名字就大概知道这种代理方式的用途了。这种代理方式大部分用于行为管理设备上,它会根据需要将客户端发送的报文进行修改,而客户端并不知道有这层代理。
4.使用代理的几点好处
(1)目标服务器和客户端之间不能进行网络互通,这时候客户端就可以使用代理服务器作为跳板去访问目标服务器。这挺类似在国内使用v*n去访问国外网站。
(2)客户端和目标服务器之间网络质量不好。通过本区域的代理服务器去访问,可以改善这一问题。
(3)可以在代理服务器上设置缓存,缓存命中就可以直接访问,不需要再去访问目标服务器。如果有独立的缓存服务器,也可以是在代理服务器上先去缓存服务器上查询缓存,查不到在将请求转发给目标服务器。
(4)在代理服务器上缓存静态资源,静态资源一般是不会改变的。就不用去目标服务器上拿了。
(5)在代理服务器上进行身份验证、权限认证、记录日志等等。
(6)对目标服务器进行保护。只有代理服务器能访问目标服务器,其他地方的请求只有经过代理服务器过滤后才进来,自然保证了目标服务器的安全。
(7)还有一点就是上面说的可以在代理服务器上负载均衡的转发请求到目标服务器。