Nginx 做反向代理,一个服务优先被使用,当无法提供服务时才使用其他的备用服务

可以通过 Nginx 的 try_files 或 error_page 指令来实现请求的失败重试。你可以配置两个 HTTP 服务器,Nginx 会首先尝试访问服务器 A,如果无法访问,则代理到服务器 B。

以下是一个示例配置,演示如何实现这一逻辑:

nginx 复制代码
http {
    upstream server_a {
        server server_a_ip:port;  # A 服务器的 IP 和端口
    }

    upstream server_b {
        server server_b_ip:port;  # B 服务器的 IP 和端口
    }

    server {
        listen 80;
        server_name your_domain.com;  # 你的域名

        location / {
            # 尝试访问 A 服务器
            proxy_pass http://server_a;

            # 如果 A 服务器无法访问,则重试 B 服务器
            error_page 502 = @fallback;  # 502 Bad Gateway 错误表示 A 无法访问

            # 可以根据需要处理其他错误码
            error_page 504 = @fallback;  # 504 Gateway Timeout 错误也可以考虑重试
        }

        location @fallback {
            proxy_pass http://server_b;  # 代理到 B 服务器
        }
    }
}

配置说明:

  • upstream:定义了两个上游服务器,分别是 A 和 B。
  • location /:Nginx 会尝试先通过 proxy_pass 访问服务器 A。
  • error_page:当 A 返回 502 或 504 错误时,会重定向到 @fallback,即服务器 B。
  • location @fallback:在这里,Nginx 会代理请求到服务器 B。

注意事项:

确保 A 和 B 服务器的 IP 和端口正确配置。

这种方法使用了错误页面的重定向,当 A 返回可重试的错误时(如 502 或 504),Nginx 会尝试连接 B。

你可以根据需要自定义其他错误处理和重试逻辑。

通过这种配置,你可以在 A 服务器不可用时优雅地回退到 B 服务器。

相关推荐
dys_Codemonkey6 小时前
如何在树莓派上用 VS Code 优雅直连内部的 Ubuntu 子系统/容器用来访问容器内的文件和代码?
linux·运维·ubuntu·树莓派
上海合宙LuatOS7 小时前
LuatOS核心库API——【 string】字符串操作
运维·服务器·物联网·junit·硬件工程·信息与通信·嵌入式实时数据库
徐子元竟然被占了!!7 小时前
Linux的cat
linux·运维·服务器
带娃的IT创业者7 小时前
WeClaw 离线消息队列实战:异步任务队列如何保证在服务器宕机时不丢失任何一条 AI 回复?
运维·服务器·人工智能·python·websocket·fastapi·实时通信
kc胡聪聪8 小时前
nginx的性能优化与监控
运维·nginx·性能优化
上海合宙LuatOS8 小时前
LuatOS核心库API——【sys】LuatOS运行框架
运维·服务器·物联网·硬件工程·lua·软件工程·信息与通信
运维行者_9 小时前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
IMPYLH10 小时前
Linux 的 b2sum 命令
linux·运维·服务器·bash
renhongxia110 小时前
PostTrainBench:LLM 代理能否自动化 LLM 后培训?
运维·人工智能·深度学习·机器学习·架构·自动化·transformer
celeste031010 小时前
Redis Summary
linux·运维·服务器·redis·笔记