代理位于客户端与服务端之间,协助完成两者的通信。在这一通信模型中,客户端发起请求,服务端响应请求。代理的存在并不是必须的。

反向代理

反向代理位于客户端和服务端之间,但对客户端来说是透明的。客户端的请求实际上是由反向代理接收并处理的。这种代理模式有助于改善后端服务器的负载均衡、安全性和可维护性,同时对外隐藏后端服务器的具体实现和架构。

常见于各种 LB 或者使用 nginx 作为真实工作负载的流量入口场景。

正向代理

正向代理为客户端提供服务,需要在客户端进行配置。正向代理帮助客户端通过代理访问服务端,实现特定网络环境的访问或隐藏客户端的真实信息。

常见于系统环境变量 HTTP_PROXY 配置的地址所对应的服务。

透明代理

透明代理是一种特殊的正向代理,通常由网络管理员部署和维护。在这种代理中,客户端和服务端对代理的存在都没有明确的感知。

日常的开发工作中,其实透明代理比较少见,或者说比较少直观的感受到。 比如 https 大力推广之前的运营商劫持 http 流量,在正常的站点中插入广告,这也算是透明代理的一种应用场景。