nginx默认通过upstream块内server指令实现轮询负载均衡,需配合proxy_pass引用upstream名称,并可添加max_fails、fail_timeout等参数启用健康检查,最后通过nginx -t校验和systemctl reload nginx热加载生效。

直接在 upstream 块里列出后端服务器地址,Nginx 默认就用轮询方式分发请求,不需要额外写算法参数。
配置 upstream 服务器组
打开 /etc/nginx/nginx.conf 或站点配置文件(如 /etc/nginx/conf.d/default.conf),在 http 块内添加:
upstream backend {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80;
}
每行 server 指令代表一台后端服务器,IP 和端口按实际填写。Nginx 会自动按顺序轮流把请求发给它们。
关联到反向代理 location
在 server 块中,用 proxy_pass 指向刚才定义的 upstream 名称:
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
注意:proxy_pass 后面必须是 http:// 开头 + upstream 名(如 http://backend),不能写成 http://192.168.1.10 这类具体地址,否则轮询失效。
启用健康检查与容错
轮询本身支持基础故障剔除,只需加几个参数就能让 Nginx 自动跳过宕机节点:
-
max_fails=3:连续失败 3 次就标记为不可用 -
fail_timeout=30s:30 秒内不往这台发请求 -
backup:加在某台 server 后,仅当其他全挂时才启用它 -
down:临时注释某台(比如维护中),加在 server 行末即可
示例:
upstream backend {
server 192.168.1.10:80 max_fails=3 fail_timeout=30s;
server 192.168.1.11:80 backup;
server 192.168.1.12:80 down;
}
验证并生效配置
改完保存后,务必执行两步:
- 运行
sudo nginx -t检查语法是否正确 - 确认无误后执行
sudo systemctl reload nginx(或nginx -s reload)热加载配置
reload 不中断服务,比 restart 更安全。只要没报错,轮询就已实时生效。











