代理是一种中间角色

常见情形中,客户端先把请求交给代理,代理再联系目标服务并转回结果。有的会保存常用结果,有的会筛选请求;代理并不都承担同样功能。

例如机构为获准设备提供统一出口,可以按政策处理外部访问;网站也可以设置统一入口,再把请求交给内部应用。两种情形都有中间角色,但服务对象不同。

一眼看懂 / 示意图

从谁的一侧理解代理

  1. 01正向代理

    为客户端提供对外访问服务

  2. 02反向代理

    作为后端服务的公开入口

  3. 03附加能力

    缓存、分流、TLS等取决于配置

正向/反向是角色区别,附加能力不是每种代理必备。

正向与反向,看它主要代表谁

正向代理主要为客户端一侧提供访问服务;反向代理则代表后面的服务器群接受请求。用户访问网站时,可能只知道公开入口,并不知道后面具体是哪台应用实例。

网站入口处的反向代理还可能负责建立安全连接、保存常用内容,或把请求分给多台机器,但这些是可选能力。一个程序能兼任多个角色,并不意味着“代理”和“负载均衡”两个词完全同义。

增加中间层,也增加信任关系

如果浏览器的安全连接到代理处结束,代理再去连接内部服务,那后一段怎样保护仍要另外安排。不能因为浏览器到入口是HTTPS,就推断其后每一段都采用相同的安全机制。

代理还可能记录访问元数据或根据配置看到内容。使用代理不会自动获得全面匿名;判断安全和隐私时,应明确谁控制它、它能接触什么,以及整个链路的保护边界。