插件窝 干货文章 nginx负载均衡的三种方式

nginx负载均衡的三种方式

server 服务器 请求 888    来源:    2025-04-05

Nginx作为高性能的反向代理服务器,支持多种负载均衡策略。以下是三种核心负载均衡方式及其配置示例:


1. 轮询(Round Robin)

默认策略,按顺序将请求均匀分发到所有后端服务器。

upstream backend {
    server 192.168.1.101:80;
    server 192.168.1.102:80;
    server 192.168.1.103:80;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

特点
- 简单高效,默认权重相同。
- 适合服务器性能相近的场景。


2. 加权轮询(Weighted Round Robin)

通过weight参数分配不同权重,控制服务器接收请求的比例。

upstream backend {
    server 192.168.1.101:80 weight=3;  # 处理3倍请求
    server 192.168.1.102:80 weight=2;
    server 192.168.1.103:80 weight=1;
}

特点
- 适应服务器性能不均的场景(如CPU、内存差异)。
- 权重越高,分配的请求越多。


3. IP哈希(IP Hash)

根据客户端IP的哈希值固定分配到同一后端服务器,保持会话一致性。

upstream backend {
    ip_hash;
    server 192.168.1.101:80;
    server 192.168.1.102:80;
    server 192.168.1.103:80;
}

特点
- 解决Session共享问题(如无Redis时)。
- 可能导致负载不均(某些IP请求密集)。


其他进阶策略(补充)

  • 最少连接(Least Connections):优先将请求分发给当前连接数最少的服务器。
    nginx upstream backend { least_conn; server 192.168.1.101:80; server 192.168.1.102:80; }
  • 响应时间优先(Fair):依赖第三方模块,按服务器响应时间动态分配(需编译nginx-upstream-fair模块)。

选择建议:

  • 会话保持 → IP Hash
  • 性能不均 → 加权轮询
  • 无状态服务 → 轮询/最少连接
  • 动态调整 → 最少连接/Fair(如有模块)

通过合理配置,Nginx能显著提升系统的可用性和扩展性。