返回首页

Nginx 负载均衡策略选择实战指南

📅 创建于 2026-05-27 🔄 更新于 2026-05-27 📝 282 字

来源:马哥Linux运维 | 发布日期:2025-08-18

Nginx 负载均衡策略选择实战指南

生产环境中因负载均衡策略选择不当导致的故障屡见不鲜——购物车数据丢失、登录状态不稳、负载分布不均。本文对比两种核心策略并提供最佳实践。

两大主流策略

加权轮询(Weighted Round-Robin)

根据服务器权重按比例分发请求,适合服务器性能差异明显的场景。

upstream backend {
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
    server 192.168.1.12:8080 weight=1;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

适用场景:

  • 服务器性能差异明显
  • 无状态应用(如 API 服务)
  • 需要灵活控制流量分配

IP 哈希(IP Hash)

根据客户端 IP 哈希值将请求固定分发到特定服务器,实现会话保持。

upstream backend {
    ip_hash;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

适用场景:

  • 有状态应用(如 Session 粘性)
  • 需要会话保持的系统
  • 本地缓存依赖性强的应用

实战对比测试

指标 加权轮询 IP 哈希
平均响应时间 156ms 189ms
吞吐量 (RPS) 8,432 7,156
99% 延迟 445ms 567ms
服务器负载均衡度 ⭐⭐⭐⭐ ⭐⭐
Session 一致性

生产最佳实践:混合策略

推荐将路由按资源类型隔离:静态资源用加权轮询,用户接口用 IP 哈希

# 静态资源 — 加权轮询
upstream static_backend {
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
}

# 用户接口 — IP 哈希(保持会话)
upstream user_backend {
    ip_hash;
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

server {
    listen 80;
    server_name example.com;

    location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
        proxy_pass http://static_backend;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    location /api/user/ {
        proxy_pass http://user_backend;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

其他关键策略

  • least_conn:转发给当前活跃连接数最少的服务器,适合长连接场景
  • sticky 会话(第三方模块):基于 Cookie 实现更细粒度的会话保持
  • 主动健康检查:配合 max_fails + fail_timeout 自动摘除故障节点

选择决策要点

  1. 有状态 vs 无状态 → 有状态选 IP Hash / sticky,无状态选轮询
  2. 服务器异构程度 → 性能差异大时用加权轮询精细控制
  3. 缓存亲和性 → 本地缓存依赖强的应用优先 IP Hash
  4. 流量突发应对 → least_conn 在流量波动大时更均衡
  5. 故障容错 → 始终配合健康检查和故障摘除机制

关联页面

页面关联点
nginx-config-pitfallsNginx 配置排坑
nginx-realtime-push-guideNginx 实时推送与长连接配置
nginx-security-config-guideNginx 安全配置
nginx-pre-launch-checklistNginx 上线前检查清单
nginx-production-performance-optimization生产级 Nginx 性能优化 — OS 内核/Worker 进程/HTTP I/O/Upstream
fullstack-performance-troubleshooting全栈性能排障