Nginx轮询通过循环指针按序分发请求实现均匀分配,前提是后端性能相近、配置干净(无weight/ip_hash等干扰)、健康检查参数统一;异常节点会被临时摘除,恢复后自动回归队列,长期统计偏差应≤3%。
Nginx 的轮询策略本身不主动“保证”资源均衡,它只负责按顺序分发请求。真正的资源均衡依赖于后端节点能力一致 + 健康状态稳定 + 配置干净。换句话说,轮询是“均匀分发请求”的机制,而不是“自动适配负载”的智能调度器。
它维护一个循环指针,每次新请求到来时,指向下一个 server,到达末尾就回到开头。三台服务器 A→B→C→A→B→C……如此反复。这种纯顺序行为天然具备统计意义上的均匀性——只要所有 server 都在线、响应正常,长期来看每台接收的请求数基本一致。
weight、ip_hash、least_conn 等干扰项;server 行只保留地址和端口,不加 backup 或 down
max_fails=2 fail_timeout=15s,避免因探测阈值不同导致某台被频繁剔除,破坏轮询队列完整性轮询本身无状态,但结合基础健康检查,就能动态跳过故障节点:
max_fails 次,Nginx 会在 fail_timeout 时间内将其标记为不可用,轮询指针自动绕过它别看平均响应时间,直接查日志最可靠:
log_format upstream_log '$remote_addr - $upstream_addr [$time_local] "$request" $status';
access_log /var/log/nginx/upstream.log upstream_log;
curl 循环或 ab 工具),检查日志中 $upstream_addr 字段是否呈现严格循环序列