负载均衡与反向代理
正向代理:代理的是客户端。帮你翻墙、隐藏你 IP 的那个中间人。客户端主动配置代理,目标服务器看不到真正客户端,只能看到代理服务器。反向代理:代理的是服务器集群。你访问某个大网站,背后可能是几百台服务器轮流为你服务,但你以为你在访问一台机器。客户端无需任何配置,对客户端完全透明。反向代理提供负载均衡、安全防护、缓存加速等能力。负载均衡:把请求均匀分发给后端的多台服务器。它依赖于反向代理的转发机制,
负载均衡与反向代理 · 必记博客大全
🔥 重点前置(先记住这些,面试/排障直接拿来用)
一、核心定义 · 一句话记住
- 正向代理:代理的是客户端。帮你翻墙、隐藏你 IP 的那个中间人。客户端主动配置代理,目标服务器看不到真正客户端,只能看到代理服务器。
- 反向代理:代理的是服务器集群。你访问某个大网站,背后可能是几百台服务器轮流为你服务,但你以为你在访问一台机器。客户端无需任何配置,对客户端完全透明。反向代理提供负载均衡、安全防护、缓存加速等能力。
- 负载均衡:把请求均匀分发给后端的多台服务器。它依赖于反向代理的转发机制,可以说是反向代理的一种核心能力,当反向代理后面挂多台服务器时就自动升级为负载均衡。
二、面试必问 · 核心对比表
| 对比维度 | 正向代理 | 反向代理 | 负载均衡器 |
|---|---|---|---|
| 代理对象 | 客户端 | 服务器集群 | 同反向代理(其核心功能) |
| 客户端是否需要配置 | ✅ 需要配置代理服务器 | ❌ 不需要,对客户端透明 | ❌ 不需要 |
| 典型用途 | 翻墙、匿名访问、访问控制 | 负载均衡、安全隔离、缓存加速、SSL 终止 | 高并发分流、消除单点故障 |
| 是否有意义 | 单台即可 | 单台即可 | 2 台以上才有意义 |
| 知道背后是谁吗 | 客户端知道在访问代理 | 客户端不知道真实的服务器 | 同反向代理 |
| 常用实现 | Squid、Shadowsocks、VPN | Nginx、HAProxy、Apache | Nginx、LVS、AWS ELB |
负载均衡器专注于分发请求、消除单点故障、实现水平扩展,因此至少需要两个或以上的后端服务器才有意义;而反向代理只有一台服务器也可以发挥它的功能。
三、负载均衡算法 · 面试必背清单
| 算法 | 原理 | 适用场景 | 一句话 |
|---|---|---|---|
| 轮询 | 按顺序轮流分配 | 服务器性能相近、无状态服务(静态资源) | 最公平 |
| 加权轮询 | 按权重比例分配请求 | 服务器性能参差不齐(新老机器混用) | 强的多干 |
| 最少连接 | 分配给当前连接数最小的服务器 | 长连接服务(WebSocket、数据库连接池) | 谁闲给谁 |
| IP 哈希 | 基于客户端 IP 固定分配给同一台服务器 | 需要会话保持(购物车、登录态) | 认准不换 |
| 一致性哈希 | 服务器变更时只影响少量映射关系 | 分布式缓存(Memcached/Redis 集群扩容) | 平稳扩容 |
加粗记住:性能强配 weight、长连接用 least_conn、会话用 ip_hash、缓存用一致性哈希。
四、主流工具 · 选型速查
| 工具 | 层级 | 特点 | 一句话选型 |
|---|---|---|---|
| Nginx | L7 | 轻量、高并发、配置灵活 | 中小项目首选,80% 场景够用 |
| HAProxy | L4+L7 | 性能极致、支持 TCP/HTTP | 大型生产、长连接、四层负载选它 |
| LVS | L4 | 内核级转发、性能最高 | 极端高并发、网关级别的选择 |
| F5 | L4+L7 | 硬件设备、价格昂贵 | 有钱、需要硬件的企业场景 |
| Spring Cloud Gateway | L7 | 响应式编程、微服务生态 | Java 微服务架构必选 |
| Kong | L7 | 基于 Nginx、插件丰富、做 API 管理 | 需要 API 管理/商业化的团队 |
五、一句话避坑 · 常见误区
- ❌ 误区 1:Nginx 只能做 7 层代理 → ✅ Nginx 从 1.9.0 起支持 stream 模块做 4 层代理(TCP/UDP)。
- ❌ 误区 2:有了反向代理就可以没有负载均衡 → ✅ 一台服务器上配置反向代理也可以,但负载均衡主要靠多台后端。
- ❌ 误区 3:反向代理本身就是负载均衡 → ✅ 反向代理是实现负载均衡的基础手段之一,但负载均衡还有 DNS 负载均衡、客户端负载均衡等多种形式。
- ❌ 误区 4:负载均衡器和反向代理是一回事 → ✅ LB 主要用于分发,反向代理还能额外做缓存、SSL 卸载、安全防护。
六、云服务商 · SLB 产品线对比
云厂商的负载均衡产品命名和层级差异很大,一句话记住:
- L4 选 NLB(高性能 TCP/UDP,追求极致性能)
- L7 选 ALB(HTTP/HTTPS 高级路由,按需付费弹性伸缩)
- 老项目用 CLB(传统稳定,适合不追求弹性的场景)
| 厂商 | L4 产品 | L7 产品 | 说明 |
|---|---|---|---|
| 阿里云 | NLB | ALB(CLB 兼容 L4+L7) | NLB 单实例最大支持 1 亿并发连接,ALB 单实例最大 100 万 QPS |
| 腾讯云 | CLB(L4) | CLB(L7)/ALB | 传统 CLB 同时支持四层和七层 |
| 华为云 | NLB | ALB | ELB 分成独享型 L4/L7 和共享型 |
七、面试题快答模板
Q:正向代理和反向代理的本质区别是什么?
正向代理代理客户端,客户端知道自己在用代理,目标服务器只看到代理 IP。反向代理代理服务端,客户端根本不知道有代理存在,以为直接访问服务器,所有请求经过代理再转发。
Q:负载均衡有哪些实现层级?
两种:L4 传输层(基于 IP 和端口,工作在内核级,如 LVS),L7 应用层(基于 HTTP 内容,如 Nginx 做 URL 路由)。L4 性能更高但功能少,L7 功能丰富但有一定损耗。
Q:Nginx 负载均衡如何实现会话保持?
用 ip_hash 将同一客户端 IP 的请求固定到同一台后端,或者使用 sticky 模块做 cookie 级别的会话保持。
Q:Nginx 如何做高可用?
Nginx 本身只是软件,单点故障无法避免。需要在多台服务器上部署 Nginx,再用 Keepalived 通过 VRRP 协议实现 VIP 漂移,主节点挂了备节点自动接管。
📚 博客大全 · 按主题索引
一、原理与概念
- 反向代理与负载均衡:构建高可用服务架构的实践指南(百度开发者中心)
核心价值在于构建服务入口统一抽象层,通过代理服务器实现请求分发、安全隔离与性能优化,包含三大组件:代理服务层→负载调度层→服务集群层。涵盖轮询、加权轮询、最少连接、IP 哈希等常见策略。 - 常用组件——正向代理、反向代理、CDN(阿里云开发者)
全面讲解正向代理(代替客户端发起连接)、反向代理(隐藏真实服务器,提供负载均衡/安全防护/缓存加速)、CDN 服务原理。 - 简明入门讲义——一文理清负载均衡和反向代理(腾讯云)
负载均衡器是为了分配请求、解决单点问题而生的,因此必须是两个或以上才有意义;反向代理一个服务器也可以,类似设计模式的外观模式(Facade Pattern)。 - 正向代理和反向代理(详细定义+应用场景)(阿里云开发者)
正向代理可以隐藏客户端真实 IP、绕过限制、缓存加速;反向代理主要用于负载均衡、缓存、安全防护、SSL 终止。具体实用场景非常详细。 - 彻底理解正向代理和反向代理(含图解)(腾讯云)
通过 Facebook 访问的例子讲透代理概念,包含关键区别表格:正向代理需要设置代理信息、反向代理不需要任何配置;正向代理是客户端→服务器的转发代理,反向代理是网站内部负载均衡做的集群转发。 - 图解正向代理、反向代理、透明代理(腾讯云)
通过图解方式展示反向代理与正向代理的区别:反向代理中客户端向反向代理的命名空间发送普通请求,反向代理判断向何处(原始服务器)转交请求。 - 正向代理和反向代理:两者的区别与实现(百度开发者中心)
正向代理隐藏客户端真实地址,反向代理隐藏目标服务器真实地址。反向代理可以对请求进行负载均衡、过滤、限流等处理,提高系统的可扩展性和稳定性。
二、Nginx 深度实践
- Nginx 负载均衡:从原理到实战的深度解析(百度开发者中心)
超详细实战指南,涵盖 upstream 模块、五种核心策略(轮询/加权轮询/最少连接/IP 哈希/通用哈希)、健康检查配置(max_fails+fail_timeout)、会话保持(ip_hash)、生产环境部署模板。 - Nginx 反向代理实战教程:从入门到精通的多场景配置指南(腾讯云)
三个实战场景全覆盖:负载均衡+健康检查、动静分离+缓存优化、安全加固+限流配置,proxy_set_header 传递真实客户端 IP 的细节很关键。 - Nginx 负载均衡:原理、配置与高可用实践(百度开发者中心)
四种核心算法的适用场景分析:轮询适合无状态服务,最少连接长连接场景性能比轮询高 15%,IP 哈希需小心服务器故障时的关联 IP 会话丢失。 - Nginx 负载均衡:原理、配置与高可用实践指南(百度开发者中心)
介绍七层与四层负载均衡策略,涵盖 Nginx 的 stream 模块做四层代理的能力。 - Nginx 实用篇:实现负载均衡、限流与动静分离(腾讯云)
负载均衡配置基础、限流(limit_req)、动静分离配置全套。 - Nginx 与 Tomcat 协同:构建高可用负载均衡群集(百度开发者中心)
Nginx 反向代理结合 Tomcat 部署群集,架构设计覆盖 Nginx 反向代理层、Tomcat 应用服务层、共享存储层。 - Nginx 之动静分离解读(华为云开发者社区)
动静分离核心思路:动态资源由 Nginx 反向代理转发给应用服务器,静态资源(图片/CSS/JS)由 Nginx 直接返回。优势在于分担负载、减轻 Web 服务器压力,适合大负载场景。 - Ubuntu 上 Nginx 如何实现负载均衡(亿速云)
实操型教程,手把手教如何在 Ubuntu 上安装配置 Nginx 负载均衡集群。 - Nginx+keepalived 双机热备详解(华为云)
高可用必读!部署双机热备的完整步骤:在两台服务器上安装 Nginx 和 Keepalived→配置 Nginx 服务相同→配置 Keepalived(VRRP 协议)+ VIP 漂移→测试故障转移。
三、负载均衡算法专题
- 负载均衡算法深度解析(阿里云开发者)
覆盖随机&加权随机、轮询&加权轮询、最小活跃数、源地址哈希、一致性哈希五种算法,选型建议清晰。
四、微服务与网关
- Spring Cloud Gateway 深度解析:现代 API 网关的路由、过滤与断言实战(腾讯云)
性能数据硬核:吞吐量可达 Zuul 1.x 的 3-5 倍,平均延迟降低 60% 以上。基于 WebFlux 响应式编程,与 Spring 生态深度集成。 - Java 开发常用 5 种微服务网关优劣势对比(百度开发者中心)
对比 Zuul、Spring Cloud Gateway、Kong 等,方便技术选型。 - API 网关 vs 反向代理 vs 负载均衡器:理解它们之间的差异(APISeven 社区)
三者的横向对比:负载均衡器在多个实例之间分发请求,反向代理保护/缓存响应,API 网关管理具体的 API 逻辑。
五、底层/网关级方案(LVS/HAProxy)
- LVS 深度解析:负载均衡软件中的技术标杆与实战指南(百度开发者中心)
LVS 在内核层工作,支持 NAT、DR、TUN 三种模式,性能极高、资源消耗极小。适合需要极致性能的场景(单集群百万级并发连接、微秒级调度)。 - LVS+Keepalived:实现高效软负载均衡的利器(阿里云开发者)
LVS+Keepalived 搭建高可用集群,避免 IP 单点故障。 - OpenStack 中 HAProxy 负载均衡的深度实践与优化策略(百度开发者中心)
HAProxy 支持 L4(TCP 模式)或 L7(HTTP 模式),与 Keepalived 配合可做主备高可用负载均衡器,适用于企业生产环境。
六、Kubernetes & 云原生
- Nginx Ingress 工作原理(阿里云)
Ingress 是一种 Kubernetes 资源,基于 Nginx 反向代理实现 HTTP/HTTPS 路由和负载均衡,规定请求应被转发到哪个 Service 的 Pod 上。 - Istio 服务网格网关与负载均衡(Istio 官方文档)
Istio Ingress/Egress Gateway 基于 Envoy 实现,可作为服务网格入口的反向代理,接管微服务之间的请求流量,支持灰度发布、流量镜像、故障注入等高级功能。
七、云端负载均衡选型
- 阿里云负载均衡 SLB 三款产品价格功能与选型(阿里云开发者)
CLB(传统型,100 万并发/5 万 QPS)、ALB(应用型七层,100 万 QPS 弹性伸缩)、NLB(网络型四层,1 亿并发连接 NFV 虚拟化)。 - ALB、NLB、CLB 选型指南(百度云)
NLB 四层低延迟高吞吐,ALB 七层智能路由内容识别,何时选四层何时选七层的判断标准。 - AWS 负载均衡类型对比(AWS 官方)
ALB 适用于 HTTP/HTTPS 负载均衡,NLB 适用于 TCP、需要保留客户端源 IP 的场景。
🛠️ 推荐学习路径
- 刚入门:先看「原理与概念」分类中的第 2 篇(阿里云常用组件)和第 3 篇(腾讯云入门讲义)
- 想上手 Nginx:从第 8 篇(Nginx 从原理到实战)开始,完整配置一次 upstream 和反向代理
- 准备面试:背下「重点前置」部分的对比表和算法清单,再加上第 5 篇(正向反向代理区别图解)
- 微服务方向:看第 18 篇(Spring Cloud Gateway)和第 19 篇(微服务网关对比)
- 高并发/底层优化:看第 21 篇(LVS)和第 23 篇(HAProxy)
- K8s 云原生:看第 24 篇(Nginx Ingress)和第 25 篇(Istio)
📖 延伸阅读关键词
- 四层 vs 七层负载均衡:L4 基于 IP+端口,L7 基于 HTTP 内容
- VRRP 协议:Keepalived 实现高可用依赖的底层协议
- 一致性哈希 + 缓存:分布式缓存选型核心算法,减少服务器增删时的数据迁移
- Sidecar 模式:Istio 的服务网格实现方式,每个 Pod 配一个 Envoy 代理
- SSL/TLS Termination:反向代理的重要能力——SSL 证书统一放在代理层,后端服务不用都配证书
- 健康检查:max_fails+fail_timeout,自动摘除故障节点
- 会话保持 vs 无状态:ip_hash 解决会话保持,但更建议将后端设计为无状态
无状态
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)