反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,该服务器就可称之为代理服务器。由于代理服务器处在最终处理请求访问的服务器之前,因此可以在代理服务器上做负载均衡。实际上,互联网中也大量的存在反向代理服务器提供代理功能的同时也提供负载均衡的功能。其工作原理如下图所示:
由上图可以推出,反向代理服务器,管理了一组服务器,可以根据对应的负载均衡算法将不同的请求转发到不同的服务器上。服务器处理完成的响应也通过代理服务器返回给用户。由于内部服务器不直接对外提供访问,因此,内部服务器地址不需要使用外部IP,而反向代理服务器则需要配置双网卡,提供内部和对外访问的IP地址。
如上图,用户浏览器访问请求的地址是114.100.20.200,反向代理服务器接收到请求后,根据负载均衡算法计算得到一台真实的内部服务器地址192.168.1.1,并将用户的请求转发到该服务器上,192.168.1.1处理完请求后将响应返回给反相代理服务器,反相代理服务器再将该响应的内容返回给用户。
与此同时,反相代理服务器还可以具有存储静态数据用于缓存的功能,从而加速处理用户请求,提高服务器处理性能,其工作原理大概如下图所示:
反向代理服务器转发请求处于应用层协议上,因此,也称之为应用层负载均衡。该负载均衡方案与反向代理服务器功能集成到了一起,部署相对简单,但是,反向代理服务器会处理所有的请求和响应,其性能可能将会成为整个集群的瓶颈。
注:常用的代理服务器软件有:Fikker、Nginx、Squid等
参考:
[1] http://www.baike.com/wiki/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86
[2] 《大型网站技术架构——核心原理与案例分析》