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

Nginx - 实现 TCP/DUP流量的按 IP 动态转发

文章目录

  • 需求
    • 背景
    • 需求目标:
    • 使用场景:
    • 成功标准:
    • 技术要求:
  • Ng配置
  • 测试验证

在这里插入图片描述


需求

Nginx Stream TCP 协议按 IP 转发

背景

为了优化网络性能和提升服务的可用性,我们需要在 Nginx 中配置 stream 模块,使其根据客户端的 IP地址TCP 请求 动态转发到不同的后端服务器节点。此需求适用于场景如数据库代理(如 MySQL)、TCP 服务负载均衡、以及地域或来源IP分流的流量调度。


需求目标:

  1. 按客户端 IP 路由

    • 系统需根据客户端的来源 IP,将 TCP 请求智能地转发到指定的后端服务器节点。
    • 支持自定义 IP 段或单个 IP 的匹配规则。
  2. 后端节点配置

    • 后端服务器节点可能为多台,并且每个节点对应不同的业务数据或服务端口。
    • 默认情况下,如果 IP 未匹配任何指定规则,需将请求转发到预设的默认节点。
  3. 负载均衡与健康检查(可选)

    • 每个后端节点需要支持健康检查机制,当某个节点不可用时自动切换到其他节点。
    • 系统应具有一定的容错能力,避免单点故障影响整体服务。
  4. 日志与监控

    • Nginx 需记录所有连接的来源 IP 及其转发的后端服务器节点,支持日志分析与故障排查。
    • 系统需兼容现有的日志采集与监控平台,实现对转发情况的实时监控。
  5. 可扩展性

    • 配置应支持动态扩展,即可在不重启 Nginx 的情况下更新 IP 路由规则或后端节点。
    • 后端节点可根据业务需求随时增加或减少。

使用场景:

  1. 数据库代理:根据客户端所在的网络段,将数据库查询请求分发到不同的数据中心。
  2. TCP 业务调度:如按地域 IP 将 TCP 连接转发到最近的服务器节点,提升访问速度。
  3. 安全过滤:部分高风险 IP 或网络段的请求可路由到专用节点进行安全处理。

成功标准:

  • 按 IP 匹配的请求能正确转发到目标后端服务器。
  • 未匹配的请求能转发到默认节点,且整体服务稳定。
  • 后端服务器节点状态异常时,能自动切换到其他可用节点。

技术要求:

  • 使用 Nginx 的 stream 模块 实现 TCP 转发。
  • 支持 TCP 协议的端口监听和请求代理。
  • 后续可能扩展到 UDP 支持,因此设计应考虑模块化和扩展性。

Ng配置

stream {upstream socket_proxy1  {hash $remote_addr consistent;# 转发的目的地址和端口server 20.100.105.172:6789;}upstream socket_proxy2  {hash $remote_addr consistent;# 转发的目的地址和端口server 20.100.105.250:6789;}map $remote_addr $socket_proxy  {20.101.106.69 socket_proxy1; # 或者是 CIDR格式的IP段20.101.106.68 socket_proxy2;default socket_proxy2; # 默认转发的节点}server {listen 4321;proxy_connect_timeout 600s;proxy_timeout 600s;#动态选择后端节点proxy_pass $socket_proxy;}log_format detailed '$remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time $upstream_addr ''"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';map $time_iso8601 $logdate {default 'date-not-found';'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;}access_log logs/stream-access-$logdate.log detailed;
}
  • stream 块:用于处理基于 TCP 或 UDP 的流量。
  • upstream:定义了不同的后端服务器组。
  • map 指令:根据客户端的 IP地址,将请求映射到不同的后端组。
  • server:定义一个 TCP 端口监听服务,并将连接动态转发给对应的后端

在完成配置后,使用以下命令验证 Nginx 配置是否正确:

nginx -t

重新加载 Nginx 服务

nginx -s reload

测试验证

  • 使用客户端工具(如 telnet 或 nc)从指定 IP 进行连接。
  • 从stream的日志中确认请求是否正确转发到对应的后端服务器。

在这里插入图片描述

相关文章:

Nginx - 实现 TCP/DUP流量的按 IP 动态转发

文章目录 需求背景需求目标&#xff1a;使用场景&#xff1a;成功标准&#xff1a;技术要求&#xff1a; Ng配置测试验证 需求 Nginx Stream TCP 协议按 IP 转发 背景 为了优化网络性能和提升服务的可用性&#xff0c;我们需要在 Nginx 中配置 stream 模块&#xff0c;使其根…...

基于深度学习的进化神经网络设计

基于深度学习的进化神经网络设计&#xff08;Evolutionary Neural Networks, ENNs&#xff09;结合了进化算法&#xff08;EA&#xff09;和神经网络&#xff08;NN&#xff09;的优点&#xff0c;用于自动化神经网络架构的设计和优化。通过模拟自然进化的选择、变异、交叉等过…...

软考-软件设计师(10)-专业英语词汇汇总与新技术知识点

场景 以下为高频考点、知识点汇总。 软件设计师上午选择题知识点、高频考点、口诀记忆技巧、经典题型汇总: 软考-软件设计师(1)-计算机基础知识点:进制转换、数据编码、内存编址、串并联可靠性、海明校验码、吞吐率、多媒体等: 软考-软件设计师(1)-计算机基础知识点:进制…...

PyTorch 2.5 发布带来一些新特性和改进

官网&#xff1a;https://github.com/pytorch/pytorchGitHub&#xff1a;https://github.com/pytorch/pytorch原文&#xff1a;https://github.com/pytorch/pytorch/releases/tag/v2.5.0 主要亮点 (Highlights)] SDPA CuDNN 后端&#xff1a;为 torch.nn.functional.scaled_d…...

算法:560.和为k的子数组

题目 链接:leetcode链接 思路分析&#xff08;前缀和&#xff09; 注意&#xff1a;我们前面讲过滑动窗口可以处理子数组、子串等问题&#xff0c; 但是在这道题目里面注意数据范围 -1000 < nums[i] < 1000 nums[i]可正可负&#xff0c;区间的和没有单调性&#xff0c;使…...

C++之list(2)

list(2) list的迭代器 const迭代器 根据我们之前学过的知识&#xff1a; const int*p1;//修饰的是指向的内容 int *const p2;//修饰的是迭代器本身我们写const迭代器&#xff0c;期望的是指向的内容不能修改。 所以更期望写上面p1的形式 const迭代器与普通迭代器的不同点在于…...

React Componet类组件详解(老项目)

React类组件是通过创建class继承React.Component来创建的&#xff0c;是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释&#xff1a; 一、定义与基本结构 类组件使用ES6的class语法定义&#xff0c;并继承自React.Component。它们具有更复杂的功能&#…...

位运算题目-Java实现-LeetCode题解:判断字符是否唯一-丢失的数字-两整数之和-只出现一次的数字 II-消失的两个数字

这里是Themberfue 上一篇文章讲完了常见位运算的技巧以及总结 那么本章则通过五道题来运用这些技巧 判定字符是否唯一 题目解析 本题要求判断给定字符串中的字符是否唯一&#xff0c;也就是每个字符是否只出现一次 算法讲解 本题用哈希表遍历每一个字符也可以解决 如果这题使…...

复合泊松过程

复合泊松过程的均值、方差与特征函数 复合泊松过程的定义 复合泊松过程 ( Y(t) ) 是一种常见的随机过程&#xff0c;通常定义为&#xff1a; Y ( t ) ∑ k 1 N ( t ) X k Y(t) \sum_{k1}^{N(t)} X_k Y(t)k1∑N(t)​Xk​ 其中&#xff1a; ( N(t) ) 是一个强度为 ( \lambd…...

[week1] newstar ctf ezAndroidStudy

本题主要考查对 APK 基本结构的掌握 查看 AndroidManifest.xml 可以发现 activity 只有 Homo 和 MainActivity 我们用 Jadx 打开 work.pangbai.ezandroidstudy.Homo 就可以获得 flag1 打开 resources.arsc/res/value/string.xml 搜索 flag2 即可 按描述到 /layout/activity_ma…...

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑...

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…...

System.Text.Json类库进行json转化时ValueKind:Object问题

当你的使用的Json库是System.Text.Json&#xff0c;而不是Newtonsoft.Json库的时候&#xff0c;你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…...

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…...

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…...

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …...

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…...

限制游客在wordpress某分类下阅读文章的数量

在WordPress中实现某个分类下的内容限制游客只能阅读前5篇文章&#xff0c;注册用户可以阅读更多文章的功能&#xff0c;可以通过以下步骤来完成&#xff1a; 1. 安装和激活插件 首先&#xff0c;你可以使用一个插件来简化这个过程。一个常用的插件是 “MemberPress” 或 “R…...

Oracle云主机申请和使用教程:从注册到SSH连接的全过程

今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难&#xff08;疑惑abc错误&#xff09;,可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验&#xff0c;或许你们也能成功申请到自己的…...

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…...

掌握智能温控:从噪音控制到散热效率的进阶指南

掌握智能温控&#xff1a;从噪音控制到散热效率的进阶指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

FramePack视频扩散技术指南:从原理解析到实战优化的完整路径

FramePack视频扩散技术指南&#xff1a;从原理解析到实战优化的完整路径 【免费下载链接】FramePack Lets make video diffusion practical! 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack 原理解析&#xff1a;FramePack的技术突破与核心架构 视频生成效率的…...

Ubuntu 20.04 下 CasADi C++ 源码编译与机器人控制实战

1. 环境准备与依赖安装 在Ubuntu 20.04上编译CasADi C源码前&#xff0c;我们需要先搭建好开发环境。这个环节就像盖房子前要打好地基&#xff0c;缺一不可。我建议先更新系统软件包列表&#xff0c;避免后续出现版本冲突&#xff1a; sudo apt update && sudo apt u…...

SYNBO 已上线 BitMart 交易所,Synbo Camp 同步开启

2026年3月31日&#xff0c;Synbo.io 原生代币 SYNBO 将上线 BitMart 交易所&#xff0c;这也成为 Synbo 发展进程中的又一里程碑&#xff0c;并同步开启 Synbo Camp 招募活动。这不仅是一次产品上线与活动发布&#xff0c;更标志着 Synbo 正式向行业递交一套关于未来融资协作方…...

C语言实战:用栈结构解析括号匹配的三种典型错误

1. 为什么括号匹配是编程基本功 刚学C语言那会儿&#xff0c;我最怕遇到段错误(Segmentation Fault)。有次调试了整整两天&#xff0c;最后发现是少写了个右花括号。这种痛只有程序员才懂——括号就像代码的标点符号&#xff0c;漏一个整个程序就崩溃了。 用栈处理括号匹配之所…...

Django React Redux Base:终极全栈开发模板完全指南

Django React Redux Base&#xff1a;终极全栈开发模板完全指南 【免费下载链接】django-react-redux-base Seedstars Labs Base Django React Redux Project 项目地址: https://gitcode.com/gh_mirrors/dj/django-react-redux-base 想要快速构建现代化Web应用却苦于复杂…...

coze-loop快速体验:粘贴代码选择优化目标,AI自动完成

coze-loop快速体验&#xff1a;粘贴代码选择优化目标&#xff0c;AI自动完成 如果你写过代码&#xff0c;肯定有过这样的经历&#xff1a;写完一段代码后总觉得不够完美&#xff0c;想优化却不知道从何下手。是应该追求更快的运行速度&#xff0c;还是让代码更容易读懂&#x…...

OpenClaw监控告警方案:Qwen3-14B驱动服务器异常检测

OpenClaw监控告警方案&#xff1a;Qwen3-14B驱动服务器异常检测 1. 为什么需要智能化的服务器监控 作为个人站长&#xff0c;我经历过太多次深夜被服务器宕机惊醒的噩梦。传统监控工具要么配置复杂&#xff08;比如PrometheusGrafana全家桶&#xff09;&#xff0c;要么告警方…...

BG3 Mod Manager:解决模组管理难题的一站式解决方案

BG3 Mod Manager&#xff1a;解决模组管理难题的一站式解决方案 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 引言&#xff1a;告别博德之门3模组…...

G-Helper终极指南:5分钟快速掌握华硕笔记本高效控制

G-Helper终极指南&#xff1a;5分钟快速掌握华硕笔记本高效控制 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...