nginx动态端口映射
目录前言实现方式核心原理配置步骤第1步定义服务名与端口的映射表第2步用正则捕获服务名并动态转发前言在实际的项目开发中我们经常遇到这样一个场景随着微服务架构的普及后端服务被拆分成多个独立的业务模块如用户服务、订单服务、商品服务等每个模块都运行在不同的端口上。传统的做法是在 Nginx 中为每个服务单独配置一个location进行转发但这样会导致配置文件越来越臃肿每新增一个服务就要复制粘贴一大段配置。比如当你需要代理/v1/aaa/**、/v1/bbb/**、/v1/ccc/**等多个服务路径到不同的后端端口时如果采用常规写法配置文件会变成如下location /v1/aaa/ { proxy_pass http://192.168.71.254:3001/v1/aaa/; } location /v1/bbb/ { proxy_pass http://192.168.71.254:3002/v1/bbb/; } location /v1/ccc/ { proxy_pass http://192.168.71.254:3003/v1/ccc/; }每加一个服务就要复制一份维护起来非常痛苦。那么有没有一种方式可以动态地根据请求路径中的服务名自动转发到对应的端口呢答案就是Nginx 动态端口映射。本文将介绍如何利用 Nginx 的正则捕获和map指令实现「一个location搞定所有服务」的动态端口映射方案。实现方式核心原理动态端口映射的核心是「正则捕获 变量映射」两步走捕获服务名通过正则表达式从请求路径中提取服务名如Teacher查表转发根据服务名查表得到对应的端口号然后拼接proxy_pass转发地址配置步骤第1步定义服务名与端口的映射表在http块中定义map作用是「根据服务名查端口」http { # 服务名 → 端口映射表 map $service $backend_port { default 3000; # 未匹配时的默认端口 aaa 3001; bbb 3002; ccc 3003; # 新增服务只需加一行 } }map就相当于一个字典输入aaa输出3001第2步用正则捕获服务名并动态转发server { listen 80; server_name localhost; # 动态转发规则 location ~ ^/v1/([^/])/(.*)$ { set $service $1; # 捕获服务名 → aaa set $remaining $2; # 捕获剩余路径 → abc/1/2 proxy_pass http://192.168.xxx.xxx:$backend_port/v1/$service/$remaining; 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_set_header X-Forwarded-Proto $scheme; } }关键点说明location ~ ^/v1/([^/])/(.*)$正则匹配/v1/xxx/...格式的路径$1和$2分别代表第一个和第二个括号捕获的内容由 Nginx 自动赋值$backend_port通过map根据$service动态查表得到的端口号$remaining剩余路径原样保留不受层级限制

相关新闻

CXAO42311/CXAO42311B 高精度电流/功率监控器16位ADC | I²C/SMBus接口 | 双向检测 | 0-36V共模 | Alert输出

CXAO42311/CXAO42311B 高精度电流/功率监控器16位ADC | I²C/SMBus接口 | 双向检测 | 0-36V共模 | Alert输出

产品版本:Rev 1.0 | 更新日期:2026年7月 | 型号:CXAO42311 / CXAO42311B | 封装:VQFN-16L 3x3产品概述CXAO42311/CXAO42311B 是一款高精度电流检测监控器,集成16位ADC和IC/SMBus接口,通过读取负载电流和功率…

2026/7/12 1:32:18阅读更多 →
VMware Workstation 17 CPU 虚拟化配置:3个高级选项的启用条件与性能影响实测

VMware Workstation 17 CPU 虚拟化配置:3个高级选项的启用条件与性能影响实测

VMware Workstation 17 高级CPU虚拟化配置实战指南1. 虚拟化技术基础与准备工作在开始配置VMware Workstation 17的高级CPU功能前,我们需要确保硬件和软件环境满足基本要求。现代处理器通常都支持硬件辅助虚拟化技术,但默认情况下可能未在BIOS中启用。硬…

2026/7/12 1:32:18阅读更多 →
Zookeeper 3.7.1 集群部署实战:3节点配置与启停脚本自动化

Zookeeper 3.7.1 集群部署实战:3节点配置与启停脚本自动化

Zookeeper 3.7.1 集群部署实战:3节点配置与启停脚本自动化在分布式系统中,Zookeeper作为协调服务的核心组件,其高可用性直接决定了整个系统的稳定性。本文将深入探讨如何从零开始搭建一个生产级Zookeeper集群,并提供完整的自动化运…

2026/7/12 1:32:18阅读更多 →
C++视觉算法优化实战:8大手法提升图像处理性能

C++视觉算法优化实战:8大手法提升图像处理性能

1. 项目概述:为什么C优化是视觉算法的命脉?如果你是一名视觉算法工程师,或者正在向这个方向发展,你一定经历过这样的场景:算法模型在论文里跑分很高,但一到实际工程部署,尤其是在资源受限的嵌入…

2026/7/12 2:37:31阅读更多 →
23.大模型开发:深度学习----CNN 卷积神经网络 与 RNN 循环神经网络

23.大模型开发:深度学习----CNN 卷积神经网络 与 RNN 循环神经网络

前言刚入门深度学习的同学很容易搞混两件事:什么时候用 CNN,什么时候用 RNN。图片、照片、摄像头画面、医学影像:空间结构数据 → CNN 卷积神经网络;句子、语音、股价、气温时序、文字对话:前后有序依赖的数据 → RNN …

2026/7/12 2:37:31阅读更多 →
WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验

WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验

WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏画面卡顿而烦恼吗?想要让高端显卡发挥全部实力&#xff0…

2026/7/12 2:37:31阅读更多 →
多端看文件工具大揭秘:手机、电脑、电视无缝切换不是梦

多端看文件工具大揭秘:手机、电脑、电视无缝切换不是梦

一、引言在数字化时代,我们的工作和生活越来越依赖于各种电子设备。无论是在办公室的电脑前紧张地准备工作汇报,还是在家里的沙发上惬意地用手机或电视浏览资料,又或是在外出途中通过平板处理紧急事务,多端看文件的需求日益频繁。…

2026/7/12 2:37:31阅读更多 →
TB67H480FNG与MK64FN1M0VDC12在工业控制中的黄金组合

TB67H480FNG与MK64FN1M0VDC12在工业控制中的黄金组合

1. 为什么选择TB67H480FNG与MK64FN1M0VDC12这对黄金组合在工业控制和嵌入式系统开发领域,电机驱动与主控MCU的选型往往决定了整个项目的性能上限。TB67H480FNG作为东芝(现为佳能电子)推出的高效能步进电机驱动芯片,与NXP的MK64FN1…

2026/7/12 2:37:31阅读更多 →
库的操作——MySQL(增删查改+示例)

库的操作——MySQL(增删查改+示例)

库的操作——MySQL(增删查改示例) 文章摘要:本文全面讲解MySQL数据库的六大核心操作:查看数据库(SHOW DATABASES)、创建数据库(CREATE DATABASE)、字符集编码与校验规则设置、查看数…

2026/7/12 2:32:30阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/11 18:12:23阅读更多 →