Nginx轮询是最基础的负载均衡方式,按顺序将请求依次分发给后端服务器,需配合健康检查与容错参数提升可靠性。

想让多台Web服务器协同工作、自动分担流量,Nginx的轮询(Round Robin)是最基础也最常用的负载均衡方式。它不依赖额外组件,配置简单,适合新手快速上手高可用部署。
轮询是怎么工作的?
Nginx默认启用轮询机制:当客户端发起请求时,Nginx按顺序把请求依次分发给后端服务器列表中的每一台——第1个请求到server1,第2个到server2,第3个回到server1,以此类推。这种策略天然均衡,前提是各服务器性能和负载能力接近。
注意:轮询本身不检测后端是否健康。如果某台服务器宕机,Nginx默认仍会尝试转发,直到超时或失败次数达到阈值才暂时剔除。因此建议配合health_check或max_fails/fail_timeout使用。
最简轮询配置示例
在http块中定义upstream,再在server块中用proxy_pass引用即可:
http {
upstream backend {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
这段配置就完成了三台服务器的轮询分发。无需额外指令,默认即启用。
让轮询更可靠:几个关键优化项
- 标记不可用节点:在server行后加down,如server 192.168.1.11:80 down;,该节点将被跳过,常用于主动下线维护
- 设置容错参数:添加max_fails=3 fail_timeout=30s,表示连续3次失败后,30秒内不再转发请求到该节点
- 分配权重(非均等轮询):用weight=2提升某台服务器的调度概率,例如高性能机器可设更高权重,实现更合理的资源利用
- 启用连接复用:在upstream中加入keepalive 32;,减少后端建连开销,提升吞吐
验证与日常检查要点
配置完成后,别急着 reload —— 先用nginx -t检查语法;确认无误再nginx -s reload。上线后可通过以下方式观察效果:
- 在每台后端Web服务器的访问日志中,对比请求IP分布是否大致均匀
- 临时停掉一台后端服务,观察Nginx错误日志是否出现connect failed,以及剩余节点是否自动承接全部流量
- 用curl -I http://your-domain多次请求,配合grep "Server"或自定义响应头,确认请求确实落在不同后端
轮询不是万能解法,但它足够轻量、稳定,是构建高可用架构的第一步。理解它,才能更好进阶到ip_hash、least_conn或集成Consul等动态发现方案。










