NGINX负载均衡配置详解准备工作47.112.199.100 #反向代理服务器47.112.199.101 #真实服务器147.112.199.102 #真实服务器21.反向代理服务器配置worker_processes 1; events { worker_connections 1024; } http { # 定义后端服务器组 upstream backend { # 默认轮询算法请求按顺序分配 server 47.112.199.101; server 47.112.199.102; # 也可以使用其他算法例如 # ip_hash; # IP哈希算法同一IP请求固定到同一服务器 # weight2; # 加权轮询第一个服务器权重为2第二个为1 } # 配置反向代理服务器 server { listen 80; server_name hyztest.com; # 可选访问域名 location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 可选设置超时时间 proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; } } }2.真实服务器配置两台后端服务器配置一般保持一致worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /data/www/html; index index.html index.html; } } }3.创建测试页面在两台后端服务器中分别创建测试页面vim/data/www/html/index/html#节点1h1Server 1: 47.112.199.101/h1#节点2h1Server 2: 47.112.199.102/h14.启动NGINX访问测试在浏览器中输入域名hyztest.com访问可以看到server1和server2轮询访问5.常用负载均衡算法① 轮询默认默认算法请求按顺序分配到各服务器upstream backend { server 47.112.199.101; server 47.112.199.102; }② 加权轮询适用于服务器性能不均的场景如新老服务器混用upstream backend { server 47.112.199.101 weight3; # 性能较强服务器处理3份请求 server 47.112.199.102 weight1; # 性能较弱服务器处理1份请求 }③ IP哈希基于客户端IP哈希同一IP请求固定到同一服务器适合需要会话保持的场景upstream backend { ip_hash; server 47.112.199.101; server 47.112.199.102; }④ 最少连接动态选择当前连接数最少的服务器适合长连接场景如WebSocketupstream backend { least_conn; server 47.112.199.101; server 47.112.199.102; }⑤ URL哈希需要第三方模块基于请求URL哈希相同URL的请求分配到同一服务器适合缓存服务器upstream backend { hash $request_uri consistent; server 47.112.199.101; server 47.112.199.102; }⑥备用服务器当主服务器全部不可用时请求才会分配到备用服务器upstream backend { server 47.112.199.101; server 47.112.199.102 backup; }6.高级负载均衡算法①加权轮询 健康检查upstream backend { server 47.112.199.101 weight3 max_fails2 fail_timeout30s; server 47.112.199.102 weight1 max_fails2 fail_timeout30s; }②IP哈希健康检查upstream backend { ip_hash; server 47.112.199.101 max_fails2 fail_timeout30s; server 47.112.199.102 max_fails2 fail_timeout30s; }参数说明max_fails2在fail_timeout时间内如果请求失败2次就将该服务器标记为downfail_timeout30s标记为down后30秒内不再向该服务器发送请求自动剔除当服务器宕机时Nginx会自动停止向该服务器发送请求imeout30s;} 参数说明 - max_fails2在fail_timeout时间内如果请求失败2次就将该服务器标记为down - fail_timeout30s标记为down后30秒内不再向该服务器发送请求 - **自动剔除**当服务器宕机时Nginx会自动停止向该服务器发送请求 - **自动恢复**当服务器恢复后Nginx会继续向其发送请求