什么是网络代理
代理(Proxy)是一种网络中间服务,客户端不直接连真正的服务器,而是通过中间代理转发请求。代理服务器接收客户端请求,然后选一个后端服务器把请求转过去,再把响应回来。
代理用得最多的两个场景:
- 负载均衡:把请求分摊到一组真实服务器,避免某台被压垮
- 安全 / 访问控制:对外只暴露代理的 IP,真实服务器藏在后面
而"4 层代理"和"7 层代理"是按 OSI 模型分类的。要理解这个区别,得先看 OSI 模型。
OSI 七层模型

从下到上(物理层 → 应用层):
- 物理层 —— 电信号、光信号、网线、光纤
- 数据链路层 —— MAC 地址、以太网帧
- 网络层 —— IP 地址、路由(IPv4 / IPv6 / ICMP)
- 传输层 —— TCP / UDP,端口的概念在这层
- 会话层 —— 建立、管理会话
- 表示层 —— 数据格式、加密(TLS 解密在这层)
- 应用层 —— HTTP / FTP / DNS / SMTP 等具体协议
TCP/IP 四层模型(实际工程用的)

OSI 模型偏理论,实际工程界更常用 TCP/IP 四层:
- 链路层(对应 OSI 的 1+2)
- 网络层(对应 OSI 的 3)
- 传输层(对应 OSI 的 4)
- 应用层(对应 OSI 的 5+6+7)
"4 层代理"指的就是工作在传输层的代理,"7 层代理"指的是工作在应用层的代理。
4 层代理(传输层代理)
4 层代理基于 IP + 端口 做决策。客户端发 TCP SYN 包过来,代理设备读取目标 IP + 端口,根据规则(轮询、加权、IP hash 等)选一台后端服务器,把 SYN 包原地改一下目标 IP就转发出去。
关键特征:
- 代理只看 IP 层和 TCP 层信息(IP + 端口)
- 不解析应用层数据(不知道你发的是 HTTP 还是 MySQL 协议)
- TCP 三次握手是客户端 ↔ 后端服务器直接建立的,代理只起到改 IP 转发的作用
- 性能极高 —— 每个包改个 IP 头就走,几乎零延迟
代表产品:LVS、HAProxy(4 层模式)、F5 Big-IP。
客户端 → 4 层代理 → 后端服务器
(改目标 IP)
↑
三次握手对端是后端服务器,代理只是中转
7 层代理(应用层代理)
7 层代理工作在应用层,以 HTTP 代理为代表(也可以是 FTP、SMTP 等其他应用层协议)。
跟 4 层的核心区别:代理必须先完整接收 HTTP 请求(包括 header 和 body),解析出内容,才能决定怎么转发。
关键特征:
- 客户端 ↔ 代理 之间先做完整 TCP 握手,握完代理再独立去 ↔ 后端服务器 握手
- 代理能"看懂"应用层数据 —— URL 路径、Host header、Cookie、User-Agent 等等
- 因此能做按内容路由:
/api/*转 A 服务器,/static/*转 CDN,/admin/*转管理后台 - HTTPS 解密发生在这里 —— 代理持有目标域名的 SSL 证书,跟客户端建立 TLS,然后用明文(或重新 TLS)跟后端通信
- 性能略低于 4 层 —— 每个请求都要完整解析,内存和 CPU 开销大
代表产品:Nginx、Apache、Envoy、Traefik、Cloudflare 等。
客户端 ↔ 7 层代理 ↔ 后端服务器
↑ ↑
独立 TCP 握手 独立 TCP 握手
(解 TLS, (代理代为发起)
读 HTTP header,
按规则路由)
实际差别:能做什么 / 不能做什么
| 能力 | 4 层代理 | 7 层代理 |
|---|---|---|
| 按 IP + 端口分发 | ✓ | ✓ |
| 按 URL 路径分发 | ✗ | ✓ |
| 按 Host header 分发 | ✗ | ✓ |
| SSL 终止(卸载证书) | ✗ | ✓ |
| 改 / 加 HTTP header | ✗ | ✓ |
| 代理 MySQL / Redis | ✓ | ✗(不懂这些协议) |
| 并发性能 | 极高(百万级) | 高(几万到几十万) |
| 应对 SYN Flood 攻击 | 攻击会透传到后端 | 代理就拦下了 |
七层代理的高级用法
因为 7 层代理能完整理解 HTTP 请求,可以做很多 4 层做不了的智能调度:
1. 按内容类型分发
server {
listen 80;
server_name example.com;
# 图片走 CDN
location ~* .(jpg|jpeg|png|gif|webp)$ {
proxy_pass http://cdn-backend;
}
# API 走应用服务器
location /api/ {
proxy_pass http://api-backend;
}
# 静态资源走 nginx 自己
location / {
root /var/www/static;
}
}
2. 安全策略:防 SYN Flood / 应用层攻击
SYN Flood 攻击在 4 层代理下,所有 SYN 包都会被代理转发到后端,后端要为每个伪造的 SYN 维护半连接队列,资源迅速耗尽。
在 7 层代理下,SYN 攻击只能打到代理设备本身,后端服务器完全没感觉。再配合代理的 rate limit、WAF 规则,能拦住绝大多数应用层攻击(SQL 注入、暴力枚举、奇怪的 UA 等)。
3. 改写请求 / 响应
location /api/ {
proxy_pass http://api-backend;
# 加自定义 header
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 改响应 header
add_header Cache-Control "no-cache";
add_header X-Served-By "nginx-edge-01";
}
常见代理软件对比
Nginx —— 工作在第 7 层(也支持 stream 模块做 4 层)。轻量、并发能力强、配置灵活。中国大陆几乎所有大站(百度、京东、新浪、网易、腾讯、淘宝)的入口都是 Nginx 集群。对比 Apache:内存占用少、并发更高,但插件生态比 Apache 略小。
LVS —— Linux Virtual Server,章文嵩博士主导。纯 4 层负载均衡,内核态运行(已经在 Linux 2.4+ 内核里),性能极高。配置稍复杂,生态不如 Nginx 大众。适合超大流量场景(百万并发以上)。
HAProxy —— 既能做 4 层也能做 7 层,功能折中。优势:支持 Session 保持、Cookie 引导、URL 级健康检查。负载均衡领域用得不少,但近年被 Envoy / Traefik 等新生代蚕食。
Envoy —— CNCF 项目,云原生时代的代理标杆。7 层为主,xDS 动态配置,Istio 服务网格的数据平面就是 Envoy。配置 yaml/json 比 Nginx 复杂,但适合大规模微服务架构。
Traefik —— K8s 友好,自动发现服务,配置极简。适合容器化部署。
实际生产架构
大部分线上系统会组合使用 4 层和 7 层代理:
Internet
|
↓
[LVS 集群 (4 层)] ← DDoS 防护、IP 级负载均衡
|
↓
[Nginx 集群 (7 层)] ← URL 路由、SSL 终止、WAF
|
↓
[应用服务器组]
外层 LVS 处理海量连接,内层 Nginx 做精细路由。这样性能、安全、灵活性都兼顾。
一句话总结
选 4 层:看重性能、协议非 HTTP、需要扛 DDoS。
选 7 层:需要按 URL / Host / Cookie 路由、要做 WAF、要 SSL 终止。
规模上来后:4 层 + 7 层组合用,各司其职。
—— 别看了 · 2026