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次则标记为不可用)。sudo nginx -t && sudo nginx -s reload。