Proxy 101
文章目录
前言
在当今互联网系统中,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 作为请求和响应的中转站,对流量进行控制、转发或加工处理。
请求流程:
|
|
通过 Proxy,客户端无需直接连接目标服务器。Proxy 可以缓存响应、做身份认证、限流、审计等。
属性与指标
关注的 Proxy 属性与性能指标如下:
-
透明性(Transparency) 是否对客户端/服务端隐瞒其代理身份。
-
延迟(Latency) 引入代理后是否带来响应延迟。
-
吞吐量(Throughput) 每秒可处理的请求数量。
-
缓存能力(Caching) 能否复用响应,加快访问速度。
-
负载均衡能力 能否根据策略分发请求到多个后端服务。
-
可扩展性(Scalability) 是否支持水平扩展,高可用部署。
-
安全性 是否支持 TLS、认证鉴权、WAF 防护等。
类型
按照方向分类
-
正向代理(Forward Proxy) 代理客户端访问外部服务。典型如公司内网代理访问外部互联网。
-
反向代理(Reverse Proxy) 代理外部请求访问后端服务。典型如 Nginx、Apache 作为 Web 服务入口。
按照功能用途分类
-
缓存代理(Caching Proxy) 对响应进行缓存,提高命中率,降低源站压力。
-
负载均衡代理(Load Balancer) 将请求分发到多个服务实例,提高吞吐与可用性。
-
安全代理(Security Proxy) 提供认证鉴权、防火墙、速率限制、CSRF/XSS 保护等。
-
协议转换代理 如 HTTP ↔ HTTPS,或 gRPC ↔ REST 的协议转换器。
-
服务代理(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 是现代系统的“隐身盾牌”,挡风遮雨,润物无声。
文章作者 沉风网事
上次更新 2019-01-18