当前位置: 首页 > article >正文

【亲测有效】nginx负载均衡指定ip端口转发,做自动切换

nginx如何做到?监听两个目标公网ip,这两个目标ipA,ipB 是做了iptables的转发,按照端口转发的,例如我访问ipA的3333端口就转发某个squid代理x上,访问ipB的3333端口也转发到同一个squid代理x上。现在我访问nginx的3333端口,默认都走ipA转发,只有发现ipA不通或ipA转发不成功时ngnix自动切换到走ipB,我不用动任何代码。

可以通过配置 NGINX 的 stream 模块来实现。这个模块支持 TCP/UDP 的负载均衡与代理。你可以配置 NGINX 监听在一个端口,然后在检测到 IP A 不可达的情况下自动切换到 IP B。

下面是 NGINX 配置示例:

stream {
    upstream squid_backend {
        server ipA:3333 max_fails=3 fail_timeout=30s;  # ipA的转发地址
        server ipB:3333 backup;                        # ipB的转发地址,作为备份
    }

    server {
        listen 3333;  # 监听的公网端口

        proxy_pass squid_backend;
        proxy_connect_timeout 1s;
        proxy_timeout 10s;
    }
}

配置说明:

  1. upstream块

    • ipA:3333:配置第一个目标 IP 和端口。
    • max_fails=3 fail_timeout=30s:在 30 秒内如果失败 3 次则标记该服务器为不可用。
    • ipB:3333 backup:配置第二个目标 IP 和端口,backup 表示只有在 ipA 不可用时才会使用 ipB
  2. server块

    • listen 3333:Nginx 监听的端口,这个端口将接收外部请求。
    • proxy_pass squid_backend:将请求转发到定义的 upstream 中的服务器。
    • proxy_connect_timeout 1s:设置连接超时时间为 1 秒。
    • proxy_timeout 10s:设置请求超时时间为 10 秒。

操作逻辑:

当用户访问 NGINX 的 3333 端口时,Nginx 会默认将请求转发到 ipA:3333。如果 ipA 无法连接或连续 3 次连接失败,那么 NGINX 会自动切换到 ipB:3333,不需要你修改任何代码。

请确保你已经编译 NGINX 时启用了 stream 模块,因为这个模块不是所有 NGINX 版本都默认启用的。

通过这种配置,可以达到你所需要的在 ipA 不可用时自动切换到 ipB 的效果。


http://www.kler.cn/a/294063.html

相关文章:

  • 路由器基本原理与配置
  • ssh登陆服务器后支持Tab键命令补全
  • 决策树基本 CART Python手写实现
  • 《鸿蒙生态:开发者的机遇与挑战》
  • 将单色像素值转换成灰阶屏的灰度序列的算法
  • Qt主线程把数据发给子线程,主线程会阻塞吗
  • 用Python实现时间序列模型实战——Day 13: 自回归条件异方差模型 (ARCH/GARCH)
  • 《深度学习》OpenCV轮廓检测 轮廓近似 解析及实现
  • Linux date命令 日期格式化与计算
  • VScode 的下载安装及常见插件 + Git的下载和安装
  • 2024年四川省安全员A证证考试题库及四川省安全员A证试题解析
  • 数据结构(1)数据结构基础(单向链表)
  • 双雄并肩:Tesla P40 GTX 1650 AI工作站搭建指南
  • redis之缓存淘汰策略
  • Keysight U8031A DC power supply
  • MySQL表操作及约束
  • WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持
  • Java面试题-JavaEE框架中间件(二)
  • 基于Linux单片机的中心网关设计:实时监控传感器数据的触控屏可视化详细流程
  • Python的math库——常用数学函数全解析
  • 【软件测试】设计测试用例
  • 哈希算法是什么?
  • 四战搜索,抖音难造“百度”
  • 【Springboot系列】SpringBoot如何优雅地实现一个错误异常捕捉
  • 基于FPGA的开源项目:FOC/SHA/USB/JPEG等
  • 如何使用 Java Stream API 优化数据处理