在 Nginx 配置文件的 http 块中定义 upstream 模块,默认即为轮询策略,将备用服务器地址后添加 backup 参数即可实现。适用场景为 HTTP 或 TCP 四层负载均衡,风险边界在于备用服务器仅在主服务器不可用时才生效,配置错误会导致 Nginx 无法重载。
先说结论:通过 upstream 块管理后端服务器列表,利用 server 指令的 backup 参数标记备用节点,无需额外模块即可实现高可用轮询。
- 适合:需要主服务器故障时自动切换至备用服务器的 Web 或 TCP 服务场景
- 先准备:确认主备服务器 IP 地址、端口及 Nginx 配置文件路径
- 验收:重载配置后检查语法错误日志,并模拟主服务器宕机验证流量切换
命令速用版
upstream backend {
server 192.168.1.10:80;
server 192.168.1.11:80 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
为什么会这样
Nginx 的 upstream 模块默认采用轮询(round-robin)算法分配请求。当某个 server 指令被标记为 backup 时,该服务器仅在所有非 backup 服务器不可达或繁忙时才会接收请求。这是 Nginx 内置的高可用机制,不需要第三方模块支持。
分步处理
1. 打开 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 下的站点文件。
2. 在 http 块内定义 upstream 块,列出主服务器地址,并在备用服务器行尾添加 backup 参数。
3. 执行 nginx -t 检查配置语法,确保没有报错信息。
4. 执行 nginx -s reload 重载配置,使更改生效而不中断现有连接。
怎么验证是否生效
查看 Nginx 错误日志 /var/log/nginx/error.log,正常情况下备用服务器不应出现访问记录。临时停止主服务器服务,观察日志中是否开始出现备用服务器 IP 的转发记录,且客户端请求未中断。
常见坑
backup 参数不能与 ip_hash 负载均衡方法同时使用,否则配置检查会报错。如果主服务器设置了 weight 权重,备用服务器依然只在主服务器不可用时生效,权重不影响备用触发条件。
常见问题
备用服务器在平时会接收请求吗
不会。backup 标记的服务器仅在所有主服务器不可用时才接收请求,平时处于待机状态。
可以配置多个备用服务器吗
可以。可以标记多个 server 为 backup,它们之间也会按轮询策略分担故障时的流量。
参考来源
- Nginx 官方文档,ngx_http_upstream_module 模块说明,https://nginx.org/en/docs/http/ngx_http_upstream_module.html