代理是一种中间角色
常见情形中,客户端先把请求交给代理,代理再联系目标服务并转回结果。有的会保存常用结果,有的会筛选请求;代理并不都承担同样功能。
例如机构为获准设备提供统一出口,可以按政策处理外部访问;网站也可以设置统一入口,再把请求交给内部应用。两种情形都有中间角色,但服务对象不同。
从谁的一侧理解代理
- 01正向代理
为客户端提供对外访问服务
- 02反向代理
作为后端服务的公开入口
- 03附加能力
缓存、分流、TLS等取决于配置
正向/反向是角色区别,附加能力不是每种代理必备。
正向与反向,看它主要代表谁
正向代理主要为客户端一侧提供访问服务;反向代理则代表后面的服务器群接受请求。用户访问网站时,可能只知道公开入口,并不知道后面具体是哪台应用实例。
网站入口处的反向代理还可能负责建立安全连接、保存常用内容,或把请求分给多台机器,但这些是可选能力。一个程序能兼任多个角色,并不意味着“代理”和“负载均衡”两个词完全同义。
增加中间层,也增加信任关系
如果浏览器的安全连接到代理处结束,代理再去连接内部服务,那后一段怎样保护仍要另外安排。不能因为浏览器到入口是HTTPS,就推断其后每一段都采用相同的安全机制。
代理还可能记录访问元数据或根据配置看到内容。使用代理不会自动获得全面匿名;判断安全和隐私时,应明确谁控制它、它能接触什么,以及整个链路的保护边界。