You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制NGINX切换使用upstream备用节点及切回主节点?

可行的简化方案

下面是三种不同复杂度的实现方式,你可以根据自己的运维场景选择:

方案1:拆分上游配置+自动化脚本(推荐,无需修改Nginx编译配置)

这是成本最低的改造方式,完全兼容你现有的配置逻辑:

  1. 把upstream backend的配置单独抽离为独立文件,比如/etc/nginx/conf.d/backend_upstream.conf,主配置里直接include该路径即可
  2. 提前准备两份固定的上游配置模板:
    • primary_active.conf 对应主节点优先的配置:
    upstream backend {
      server primary.local.net:80;
      server backup.local.net:80 backup;
    }
    
    • backup_active.conf 对应备节点优先的配置:
    upstream backend {
      server primary.local.net:80 backup;
      server backup.local.net:80;
    }
    
  3. 写一个一键切换脚本,比如/usr/local/bin/switch_backend.sh:
    #!/bin/bash
    if [ $1 == "backup" ]; then
      cp /path/to/backup_active.conf /etc/nginx/conf.d/backend_upstream.conf
    elif [ $1 == "primary" ]; then
      cp /path/to/primary_active.conf /etc/nginx/conf.d/backend_upstream.conf
    else
      echo "invalid parameter, use 'primary' or 'backup'"
      exit 1
    fi
    # 先校验配置合法性再重载,避免配置错误导致服务中断
    if nginx -t; then
      nginx -s reload
      echo "switched to $1 node success"
    else
      echo "nginx config invalid, rollback"
      exit 1
    fi
    
  4. 给脚本加执行权限后,以后切换只需要执行一行命令:
    • 切到备节点:switch_backend.sh backup
    • 切回主节点:switch_backend.sh primary

方案2:动态上游模块(无需重载Nginx,适合高并发场景)

如果你的业务对Nginx reload操作敏感,可以编译安装第三方开源模块ngx_http_dyups_module,支持通过HTTP接口实时修改上游配置,完全不需要重载服务:

  1. 编译Nginx时添加该模块,配置文件中开启dyups接口(限制仅本地访问即可)
  2. 切换时直接调用接口即可生效:
    • 切到备节点:curl -d "server backup.local.net:80; server primary.local.net:80 backup;" http://127.0.0.1/dyups/upstream/backend
    • 切回主节点:curl -d "server primary.local.net:80; server backup.local.net:80 backup;" http://127.0.0.1/dyups/upstream/backend

方案3:njs模块实现标记文件控制(无需修改配置文件)

如果你的Nginx已经安装了njs模块,可以通过读取本地标记文件的状态动态决定上游优先级,切换时仅需要修改标记文件内容,不需要修改Nginx配置:

  1. 配置njs读取/var/lib/nginx/backend_state文件的内容,根据内容返回对应的上游地址
  2. 切换时只需要执行echo "backup" > /var/lib/nginx/backend_state或者echo "primary" > /var/lib/nginx/backend_state即可生效,不需要重载Nginx

内容的提问来源于stack exchange,提问作者T-Regex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:45:00