Nginx 负载均衡配置模板:轮询、权重、IP哈希、最少连接

你是不是也遇到过这种情况:

  • 上了多台服务器,流量分配不均,有的忙死、有的闲死?

  • 用户明明登录了,一刷新就掉线,因为请求跳到了另一台机器?

Nginx 的负载均衡功能可以解决这些问题。今天这篇文章,我直接给你 4 种常用算法的配置模板,复制就能用,顺便告诉你什么时候该选哪一种。


一、先看一个最基础的 upstream 模板

复制代码
upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

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

这个配置使用默认的 轮询(round-robin) 算法,请求会依次发给三台服务器:第一台 → 第二台 → 第三台 → 第一台...

适用场景:服务器性能差不多,且服务是无状态的(比如静态资源、简单的 API)。


二、四种负载均衡算法对比

算法 配置关键词 行为 适用场景
轮询 默认(不写) 轮流分发,平均 服务器性能均衡,无状态服务
权重 weight=3 按比例分发,权重高的多接请求 服务器性能不均,强的多分点活
IP 哈希 ip_hash; 同一客户端 IP 始终打到同一台服务器 需要保持 session(如登录状态)
最少连接 least_conn; 优先分发给当前活动连接数最少的服务器 请求处理时间差异大(如文件上传、慢查询)

三、配置模板(直接复制)

1. 轮询(默认)

复制代码
upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

2. 权重

复制代码
upstream backend {
    server 192.168.1.10:8080 weight=3;  # 处理 3 倍流量
    server 192.168.1.11:8080 weight=1;
}

3. IP 哈希

复制代码
upstream backend {
    ip_hash;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

4. 最少连接

复制代码
upstream backend {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

四、健康检查(可选,但推荐)

不加健康检查时,如果某台服务器挂了,Nginx 还是会往它发请求,直到超时。加上 max_failsfail_timeout 可以自动剔除故障节点:

复制代码
upstream backend {
    server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8080 max_fails=3 fail_timeout=30s;
}
  • max_fails=3:连续失败 3 次,标记为不可用

  • fail_timeout=30s:30 秒后重试


五、一个完整示例(权重 + 健康检查 + 反向代理)

复制代码
upstream myapp {
    server 192.168.1.10:8080 weight=3 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8080 weight=1 max_fails=3 fail_timeout=30s;
}

server {
    listen 80;
    server_name api.example.com;

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

六、总结

  • 轮询:默认,适合性能相同的无状态服务。

  • 权重:服务器性能有差异时用,强的多分点流量。

  • IP 哈希:需要保持 session 时用(注意:后端增减服务器会导致哈希重分配)。

  • 最少连接:请求处理时间差异大时用,能避免慢请求堆积。

把这几个模板存下来,下次配负载均衡直接复制改 IP 就行。

相关推荐
疯狂打码的少年12 小时前
【计算机网络】TCP/IP协议族(四层体系结构,与OSI对比)
网络·笔记·tcp/ip·计算机网络
布莱克60513 小时前
TCP 三次握手与四次挥手详解
服务器·网络·tcp/ip·计算机网络·网络编程
严谨的麻辣烫16 小时前
AI Agent为什么越来越需要固定出口IP?从API白名单到生产环境网络管理
服务器·网络·tcp/ip·代理服务器
captain37616 小时前
TCP网络编程:ServerSocket与Socket详解
服务器·网络·tcp/ip
IT菜鸟程17 小时前
Ubuntu 下 apt 版 Nginx 升级为源码编译版本完整操作指南(1.24.0 → 1.30.4 实战)
linux·nginx·ubuntu
IT小白杨19 小时前
eBay多账号如何应对关联判定:主体、收款、IP、环境四层配置清单一次讲清
java·网络·网络协议·tcp/ip·自动化·指纹浏览器
sbjdhjd20 小时前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
隐擎fox21 小时前
网络传输安全剖析:WebRTC 本地真实 IP 泄漏机制(STUN/TURN)与 Python 防护检测实战
网络·网络协议·tcp/ip·安全·webrtc
盛世宏博智慧档案1 天前
以太网温湿度传感器 TCP/IP、UDP、SNMP 协议怎么选?区别详细分析
单片机·tcp/ip·udp·以太网温湿度传感器
Titan20241 天前
网络学习:网络层与数据链路层知识梳理
服务器·网络·学习·tcp/ip