nginx负载均衡需通过upstream模块定义服务器组并配置反向代理,包含轮询、加权轮询、最少连接、ip哈希会话保持及健康检查五种方法,每种均需编辑nginx.conf、测试语法并重载服务。

如果您已在Linux服务器上成功安装Nginx,但尚未实现多台后端Web服务器之间的请求分发,则需通过upstream模块定义服务器组并配置反向代理。以下是完成Nginx负载均衡配置的多种可行方法:
一、基础轮询负载均衡配置
该方法利用Nginx默认的轮询算法,将客户端请求按顺序依次分发至各后端服务器,无需额外参数,适用于后端服务器性能相近且无状态服务场景。
1、使用文本编辑器打开主配置文件:sudo vim /etc/nginx/nginx.conf
2、在http块内插入upstream定义,例如:upstream backend { server 192.168.1.101:80; server 192.168.1.102:80; }
3、在server块中添加location配置,指向该upstream组:location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
4、测试配置语法正确性:sudo nginx -t
5、重载配置使生效:sudo systemctl reload nginx
二、加权轮询负载均衡配置
当后端服务器硬件性能存在差异时,可通过weight参数为各节点分配不同处理权重,使高配服务器承接更多请求,提升整体吞吐效率。
1、修改upstream块,为server指令添加weight属性:upstream backend { server 192.168.1.101:80 weight=3; server 192.168.1.102:80 weight=1; }
2、确保proxy_pass仍指向该upstream名称:proxy_pass http://backend;
3、验证配置并重载:sudo nginx -t && sudo systemctl reload nginx
三、最少连接数负载均衡配置
该策略优先将新请求转发至当前活跃连接数最少的后端服务器,适合处理长连接或响应时间差异较大的业务,可有效避免单节点过载。
1、在upstream块开头显式声明least_conn调度方式:upstream backend { least_conn; server 192.168.1.101:80; server 192.168.1.102:80; }
2、保持原有proxy_pass及header透传配置不变
3、执行语法检查与重载:sudo nginx -t && sudo systemctl reload nginx
四、IP哈希会话保持配置
基于客户端源IP地址进行哈希运算,确保同一IP的所有请求始终被路由至同一后端服务器,适用于需要会话粘滞(session stickiness)的有状态应用。
1、在upstream块中启用ip_hash指令:upstream backend { ip_hash; server 192.168.1.101:80; server 192.168.1.102:80; }
2、注意:启用ip_hash后,weight和backup参数将失效,不可混用
3、保存配置并重载服务:sudo nginx -t && sudo systemctl reload nginx
五、健康检查增强型配置
通过第三方模块或原生keepalive机制,主动探测后端服务器可用性,自动剔除故障节点,避免请求被转发至宕机服务,提升系统鲁棒性。
1、在upstream块中为每个server添加健康检查参数:upstream backend { server 192.168.1.101:80 max_fails=3 fail_timeout=30s; server 192.168.1.102:80 max_fails=3 fail_timeout=30s; }
2、max_fails定义连续失败次数阈值,fail_timeout指定失败窗口期(秒),超限后该节点被标记为不可用
3、配合proxy_next_upstream指令,在特定错误条件下尝试下一节点:proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
4、完成配置验证与重载:sudo nginx -t && sudo systemctl reload nginx










