Nginx配置负载均衡主要有以下6种方法,通过upstream模块定义后端服务器组并指定策略,再通过proxy_pass指令转发请求:
-
轮询(默认)
按顺序依次将请求分配到后端服务器,适用于服务器性能均衡的场景。upstream backend { server 192.168.1.1:80; server 192.168.1.2:80; } -
加权轮询
为服务器设置权重,权重越高分配的请求越多,适用于服务器性能不均的场景。upstream backend { server 192.168.1.1:80 weight=3; # 权重3 server 192.168.1.2:80 weight=1; # 权重1 } -
IP哈希(ip_hash)
根据客户端IP的哈希值固定请求到同一台服务器,适用于需要会话保持的场景(如登录状态)。upstream backend { ip_hash; server 192.168.1.1:80; server 192.168.1.2:80; } -
最少连接(least_conn)
将请求分配给当前连接数最少的服务器,适用于长连接或请求处理时间差异大的场景(如WebSocket)。upstream backend { least_conn; server 192.168.1.1:80; server 192.168.1.2:80; } -
响应时间加权(fair,第三方模块)
根据服务器响应时间动态分配请求,响应时间短的优先,需安装ngx_http_upstream_fair_module模块。upstream backend { fair; server 192.168.1.1:80; server 192.168.1.2:80; } -
URL哈希(url_hash,第三方模块)
根据请求URL的哈希值分配请求,使相同URL的请求落到同一台服务器,适用于缓存服务器。upstream backend { hash $request_uri; # 需安装第三方模块 server 192.168.1.1:80; server 192.168.1.2:80; }
补充说明:
- 可通过
max_fails和fail_timeout参数设置服务器故障检测(如30秒内失败3次则标记为不可用)。 - 配置完成后需验证语法并重载Nginx:
sudo nginx -t && sudo nginx -s reload。