反向代理

前言

最近打算学习高性能互联网服务平台架建,从服务端开始,直到底层数据存储,从头到尾开始慢慢学习。服务端的高并发处理,高可靠性的保证离不开服务器的均衡负载,而反向代理可以实现负载均衡,今天我们就来看一下反向代理。

概念

我们先看一下什么是正向代理,例如一个用户访问一个www.xxx.com站点,但由于各种限制(如政策限制)用户无法直接访问该站点,只能通过一个中间服务器,然后再由中间服务器访问最终的服务器www.xxx.com。这个中间服务器就是正向代理服务器。这个过程中服务器并不知道真正的访问者是谁。而反向代理则是用户访问www.xxx.com站点,但其实返回的数据并不是用户直接访问的服务器本身的拥有,而是它又从原始的服务器中获取的数据,将拿到的数据再返回给用户。这个过程中用户并不知道www.xxx.com服务器真实地址。由此可见正向代理是针对于客户端(用户)而言的,它类似于一个跳板,是通过用户设置的代理服务器,绕过了用户所受限制的局域网防火墙,进而达到了访问受限服务器的目的;反向代理则是针对服务端而言,将防火墙背后真实服务器由反向代理服务器提供给用户访问(虽然用户不清楚真正访问的服务器)。

从安全的角度来讲,正向代理隐藏了真实的访问用户,保护了用户的隐私,服务器端可以授权合法代理来达到安全访问服务器的目的;反向代理中服务器对外透明,用户所访问的服务器代理起到了很好的保护作用,同时反向代理可以利用负载均衡来提供服务的并发处理和吞吐量,反向代理服务器还可以缓存静态内容,降低对真实服务器访问压力。

反向代理Nginx

Nginx是目前比较流行的反向代理,它可以做为Web服务器、Http反向代理、邮件代理服务器。Nginx的特点是性能非常高,对资源占用(CPU、内存)非常节省,其内存池设计, 非常稳定,而且高度模块化,易于扩展。由于Nginx开源且如此的高效,市面上有很多基于Nginx的产品,国内如淘宝的tennginx,已在淘宝内部广泛应用。

Nginx作为反向代理特点

•接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力

•nginx代理和后端web服务器间无需长连接

•发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的

•调度灵活。NGINX工作在网络协议栈的第七层,能够对HTTP应用请求进行解析和分流,支持比较复杂的正则规则,具有更优化的负载均衡效果。

•网络依赖型低。NGINX对网络的依赖程度非常低,理论上讲,只要能够ping通就可以实施负载均衡,而且可以有效区分内网和外网流量。

•支持服务器检测。NGINX能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上。

 

下一篇我们将介绍Nginx的安装和使用

posted on 2015-08-29 20:05  One heart  阅读(193)  评论(0编辑  收藏  举报