前言

在当今互联网系统中,Proxy(代理) 是一种极为常见且强大的中间组件,广泛应用于访问控制、负载均衡、安全隔离、缓存加速等场景。无论是客户端请求网站,还是服务之间互相通信,Proxy 都扮演着不可或缺的角色。


定义

Wiki 定义如下:

In computer networks, a proxy server is a server application or appliance that acts as an intermediary for requests from clients seeking resources from other servers.

简而言之:

Proxy 是一种中间人组件,用于转发客户端的请求到目标服务器,或反向代理服务端响应到客户端。


工作原理

一句话: Proxy 作为请求和响应的中转站,对流量进行控制、转发或加工处理。

请求流程:

1
Client → Proxy → Origin Server → Proxy → Client

通过 Proxy,客户端无需直接连接目标服务器。Proxy 可以缓存响应、做身份认证、限流、审计等。


属性与指标

关注的 Proxy 属性与性能指标如下:

  1. 透明性(Transparency) 是否对客户端/服务端隐瞒其代理身份。

  2. 延迟(Latency) 引入代理后是否带来响应延迟。

  3. 吞吐量(Throughput) 每秒可处理的请求数量。

  4. 缓存能力(Caching) 能否复用响应,加快访问速度。

  5. 负载均衡能力 能否根据策略分发请求到多个后端服务。

  6. 可扩展性(Scalability) 是否支持水平扩展,高可用部署。

  7. 安全性 是否支持 TLS、认证鉴权、WAF 防护等。


类型

按照方向分类

  1. 正向代理(Forward Proxy) 代理客户端访问外部服务。典型如公司内网代理访问外部互联网。

  2. 反向代理(Reverse Proxy) 代理外部请求访问后端服务。典型如 Nginx、Apache 作为 Web 服务入口。

按照功能用途分类

  1. 缓存代理(Caching Proxy) 对响应进行缓存,提高命中率,降低源站压力。

  2. 负载均衡代理(Load Balancer) 将请求分发到多个服务实例,提高吞吐与可用性。

  3. 安全代理(Security Proxy) 提供认证鉴权、防火墙、速率限制、CSRF/XSS 保护等。

  4. 协议转换代理 如 HTTP ↔ HTTPS,或 gRPC ↔ REST 的协议转换器。

  5. 服务代理(Service Proxy) 常用于微服务环境,如 sidecar 模式中的 Envoy、Istio。


Proxy 与程序关系

Proxy 是连接程序与网络资源的重要中介。典型的使用关系如下:

  • 前端通过反向代理访问后端 API
  • API Gateway 作为统一入口接收客户端请求
  • 微服务之间通过 Sidecar Proxy 通信
  • 数据访问前经缓存代理减少 DB 压力
  • 公司内网经正向代理访问外部服务

常用 Proxy 产品

产品 类型 特点
Nginx 反向代理 高性能,支持负载均衡和缓存
HAProxy 负载均衡/反向代理 高可靠性,广泛用于企业生产环境
Squid 正向代理/缓存 支持 HTTP 缓存,常用于出口代理
Envoy 服务代理 支持 gRPC,集成于服务网格中
Traefik 反向代理 配置自动发现,适合云原生环境
Apache HTTP Server 反向代理 功能强大,支持模块扩展

总结

Proxy 是现代系统架构中实现高性能、高安全、可伸缩通信的核心技术组件。它在用户访问体验、系统负载控制、安全隔离等方面发挥着关键作用。理解各种代理类型和适用场景,是构建稳定系统的重要技能之一。

一句话总结:Proxy 是现代系统的“隐身盾牌”,挡风遮雨,润物无声。