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

配置Nginx实现后端服务器故障自动切换的容错机制

Nginx 后端服务器故障自动切换配置方案

要实现两台后端服务器的故障自动切换,核心是利用Nginx的upstream模块结合健康检查参数,无需复杂第三方模块,基础配置就能满足需求。以下是完整配置示例和关键说明:

基础双活故障切换配置

这种配置下两台服务器正常时按默认轮询策略分发流量,当其中一台宕机时,流量会自动切换到另一台:

http {
    # 定义后端服务器组
    upstream backend_servers {
        # 第一台后端服务器:失败3次后标记为不可用,30秒后重试
        server 192.168.1.100:8080 max_fails=3 fail_timeout=30s;
        # 第二台后端服务器:配置相同健康检查规则
        server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
    }

    server {
        listen 80;
        server_name your_domain.com; # 替换为你的域名或IP

        location / {
            proxy_pass http://backend_servers;
            # 必要代理头配置,确保后端获取正确请求信息
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # 代理超时配置,避免请求长时间挂起
            proxy_connect_timeout 5s;
            proxy_send_timeout 10s;
            proxy_read_timeout 10s;
        }
    }
}

主备模式配置(可选)

如果希望优先使用某一台服务器,仅当主服务器宕机时才切换到备用服务器,可给备用服务器添加backup参数:

upstream backend_servers {
    server 192.168.1.100:8080 max_fails=3 fail_timeout=30s; # 主服务器
    server 192.168.1.101:8080 max_fails=3 fail_timeout=30s backup; # 备用服务器
}

关键参数解释

  • max_fails=3:Nginx在fail_timeout时间段内,尝试连接后端服务器失败3次后,将该服务器标记为不可用
  • fail_timeout=30s:标记为不可用的服务器,30秒内不会接收新请求;30秒后Nginx会重新尝试连接,若恢复正常则重新加入流量分发

验证方法

  1. 保存配置后,执行nginx -s reload加载新配置
  2. 手动停止其中一台后端服务器,通过浏览器或curl发送请求,确认流量自动切换到正常服务器
  3. 恢复宕机的服务器,等待30秒后,检查是否重新参与流量分发

注意事项

  • 确保Nginx服务器能访问后端服务器的目标端口,防火墙规则需放行相关流量
  • 默认健康检查基于连接状态和HTTP返回码,若需要更精细的检查(如检测特定接口),可编译Nginx时加入第三方ngx_http_healthcheck_module,但基础配置已能覆盖大部分场景
  • 配置完成后务必模拟宕机场景测试,确保切换逻辑生效

内容的提问来源于stack exchange,提问作者Kate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:19:51