代理服务总结

前言

最近想深入了解ngnix,在代理这块的理解有点模糊,对代理比较直观的印象是客户端可以通过一个正向代理访问受限的资源(*)。为了进一步了解ngnix提供的代理功能,不同情况下需要使用的代理类型、功能、应用场景和其作用都需要有一个比较透彻的掌握,对学习ngnix以及之后的工作中也有好处。

为什么要有代理

代理服务器位于客户端和服务器之间,扮演中间人的角色,在各个端点之间来回传输数据,避免了客户端与服务器之间直接的数据传输,下面概括一部分代理的具体用途。

过滤器

比较常见的是学校这种教育机构中,代理在为学生提供网络服务的同时需要屏蔽部分对学生成长不利的站点

访问控制

利用代理服务器在服务器以及大量资源之间实现统一的访问控制功能,这在大型企业或者科研机构中运用很广泛。通过直接对集中式的代理服务器对所有的访问控制功能进行配置,而无需经常对各个服务器进行控制升级
图一中客户端1可以无限制地访问服务器A获取新闻资源;客户端2不允许访问internet;客户端在访问服务器B之前需要输入账号和密码

代理服务总结
图一 访问控制代理

安全防火墙

在网络安全中,通常使用代理服务器来提高安全性,在网络中单一的安全节点上限制哪些应用层协议可以流入或者流出某个组织,或者通过对流量的详细检查来消除病毒

web缓存

缓存代理维护常用资源的副本,减少网络传输的带宽消耗以及提高资源获取的速度
图二中客户端1和客户端2就近访问目标服务器缓存在代理中的内容,而客户端3直接从目标服务器获取请求的内容

代理服务总结

图二 web代理缓存

反向代理

代理直接接收发送给服务器的请求,并可以发起与其他服务器的通信,定位所需请求的内容。通常这种反向代理用来提高访问慢速服务器上公共内容的性能或者均衡服务集群的负载


代理服务总结

图三 反向代理

内容路由器

代理服务器同样也可以充当内容路由器的角色,根据因特网流量状况以及内容类型讲请求导到特定的服务器
内容路由的功能比较广泛,可以用来实现各种服务级的请求,例如用户通过付费需要得到更高的性能,代理可以将付费用户的请求转发到附近的复制缓存而不是原始服务器来降低延时;或者用户用户申请过滤广告服务,通过过滤代理转发请求。


代理服务总结

图四 内容路由器

转码器

代理服务器在将内容发送会客户端之前,可以修改内容的主体格式。常见的有对图片进行压缩或者为手机生成小型的文本摘要页面,甚至可以在传输文档的过程中完成翻译功能

匿名传输

匿名代理会把客户端的请求报文删除特定的身份信息,比如客户端的ip地址、cookie、uri的会话ID等,从而提供高度的私密性和匿名性


代理服务总结

图五 内容代理

代理的分类

代理与网关,都是在客户端和服务器之间扮演中间人的角色,它们之间的区别也需要弄清楚。简单地说,代理连接的是两个或者多个使用相同协议的端点;网关连接的是两个或者多个使用不同协议的端点,网关扮演的是协议转换者的角色。


代理服务总结

图六 代理和网关的区别

代理主要分为两类:正向代理和反向代理。正向代理服务于客户端,代理客户端,对服务器匿名(服务端不知道实际发起请求的客户端);反向代理服务于服务端,代理服务端,对客户端匿名(客户端不知道请求具体到达哪台服务器)。下面详细地讨论正两种代理的结构及其作用。

正向代理

正向代理类似于网络中的跳板机,服务于客户端,如图七所示。一般正向代理和客户端在同一个局域网内,将客户端的请求发送到特定的服务器上。


代理服务总结

图七 正向代理

正向代理的作用:

  1. 访问受限的资源,例如大家常用的*软件;
  2. 作为缓存代理,加速请求访问并节省网络带宽;
  3. 记录用户行为信息,用于付费以及权限管理

反向代理

反向代理服务于服务端,对外表现为一个服务器。代理接收外界的请求,并将请求发送给内部的服务器,然后将服务器得到的结果回送给客户端,因此代理对客户端表现为一个服务器。


代理服务总结

图八 反向代理

反向代理主要的作用有两点:

  1. 保证内网的安全,在大型的服务系统中,通常将反向代理设置为公网ip暴露给外界,而服务器都设置为内网ip于代理进行交互,这样可以极大程度上保护服务器直接受到外界攻击;
  2. 服务集群的负载均衡,利用负载均衡算法将外界请求分发到负载较小的服务器,尽可能保证服务器之间的负载为均衡状态。