【Nginx反向代理】通过Nginx反向代理将多个后端server统一到同一个端口上的方法

文章目录

  • 前言
  • 解决方案:使用 Nginx 做统一反向代理

前言

在多人开发任务中,如果不同人负责不同的后端接口服务开发,那么就面临着每个人的服务部署到不同的端口上,甚至有的人的服务部署在不同的服务器上。这时候前端如果想要调用后端的接口,就非常麻烦。

比如下面这种情况:

  • 开发者 A 的接口部署在 http://localhost:5051/api/…

  • 开发者 B 的接口部署在 http://localhost:5351/api/…

  • 开发者 C 的服务部署在另一台服务器上:http://remote-server.com:8000/items/…

前端要分别调用这些接口,就需要处理多个端口、多个 IP 地址,还要配置跨域等问题,既复杂又容易出错。

解决方案:使用 Nginx 做统一反向代理

我们可以通过部署一个 Nginx 服务来统一入口端口,例如统一通过 http://api.example.com:5053 访问不同的后端接口,内部再根据请求路径转发给对应的服务。这样,前端只需要记住一个地址和端口,调用 /api1/、/api2/、/api3/ 即可访问不同的服务。

服务器端nginx安装命令:

#  在 Ubuntu上安装
sudo apt update
sudo apt install nginx -y# 在 CentOS上安装
sudo yum install epel-release -y
sudo yum install nginx -y

Nginx 配置示例:
在服务器上安装 Nginx 后,编辑配置文件(如 /etc/nginx/conf.d/api_gateway.conf),示例如下:
编辑命令:sudo vi /etc/nginx/nginx.conf

server {listen 5053;server_name api.example.com;# 代理开发者 A 的服务:本机 5051 端口location /api1/ {proxy_pass http://127.0.0.1:5051/api/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}# 代理开发者 B 的服务:本机 5351 端口location /api2/ {proxy_pass http://127.0.0.1:5351/api/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}# 代理开发者 C 的服务:远程服务器location /api3/ {proxy_pass http://remote-server.com:8000/items/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

请求映射关系

前端请求路径实际代理后的路径
http://api.example.com:5053/api1/xxxhttp://127.0.0.1:5051/api/xxx
http://api.example.com:5053/api2/xxxhttp://127.0.0.1:5351/api/xxx
http://api.example.com:5053/api3/xxxhttp://remote-server.com:8000/items/xxx

这样做的好处是:

  • 安全性更高(隐藏内部服务细节)
  • 跨域问题由后端集中处理(CORS配置)
  • 负载均衡和路由管理更灵活
  • 前端无需处理多端口逻辑

Nginx常用命令:

操作命令说明
启动 Nginxsudo systemctl start nginx启动服务
停止 Nginxsudo systemctl stop nginx停止服务
重启 Nginxsudo systemctl restart nginx重启服务(配置变更后常用)
重新加载配置sudo nginx -s reload热重载配置文件(不中断服务)
查看状态sudo systemctl status nginx查看服务是否运行中
查看版本nginx -v查看安装版本
测试配置sudo nginx -t检查配置文件语法是否正确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91581.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrontel【CH7219A-BF】CH7219A USB-C和DP 1.4至HDMI 2.1协议转换器,带DSC解码功能

G通用 D描述Chrontel 的 CH7219A 是一种低成本、低功耗的半导体器件 通过 USB Type-C 将 DisplayPort 信号转换为 HDMI 2.0 连接器。这款基于 USB Type-C 的创新型 DisplayPort 接收器具有高 高性能DSC解码器,集成HDMI 2.0发射器 专为 USB Type-C 转 HDMI 2.0 转换器…

疯狂星期四文案网第26天运营日记

网站运营第26天,点击观站: 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 30多ip,断崖式下跌,习惯了。。 今日搜索引擎收录情况 必应52个页面,比昨日12 百度仍然只有首页 谷歌收录正常 …

元策联盈:深耕金融领域,赋能行业发展​

元策联盈:深耕金融领域,赋能行业发展元策联盈在金融行业的深耕细作,不仅体现在为客户提供优质服务上,更在于其对行业发展的积极推动和自身的不断创新突破。行业贡献与社会责任元策联盈始终将社会责任融入企业发展的血脉之中。在助…

力扣-字母异位词

这里我也是没有太懂,只懂个大概,先统计p和当前窗口的字符,后主要在窗口大小固定为 p.length(),在 s 上滑动做文章,在s里找到p的长度大小,最后直接比较两个频率数组来判断异位词定长窗口做法class Solution …

华为数通HCIP

华为认证数通方向的 HCIP(华为认证 ICT 高级工程师)考试难度适中,既不像 HCIA(初级)那样侧重基础概念,也不像 HCIE(专家级)需要复杂的综合实验和面试,但仍需要系统的知识…

在SQL SERVER 中,用SSMS 实现存储过程的每日自动调用

在 SQL Server Management Studio (SSMS) 中实现每日自动调用存储过程,需通过 ​​SQL Server 代理作业​​配置定时任务。以下是详细操作步骤:🔧 一、启用 SQL Server 代理服务(前置条件)​​启动服务​​&#xff1a…

赛博算命之八字测算事业运势的Java实现(四柱、五行、十神、流年、格局详细测算)

个人主页-爱因斯晨 文章专栏-赛博算命 最近学习人工智能时遇到一个好用的网站分享给大家: 人工智能学习 文末有投票,评论区有红包哦! 前言 在前段时间更新了赛博算命系列,出乎我的意料反响很好。也受到广大网友的赞赏&#xff0…

2025 腾讯广告算法大赛 Baseline 项目解析

项目概述 2025 腾讯广告算法大赛 Baseline,一个简单的序列推荐系统,主要用于建模用户和物品的交互序列,并利用多模态特征(文本、图像等 embedding)来提升推荐效果。 核心文件功能 1. main.py - 主训练脚本 负责模型训练…

数据结构(11)栈和队列算法题 OVA

一、概念与结构 循环队列是一种特殊的队列,首尾相连成环,也叫环形队列。环形队列具有以下三个特点: (1)队头删除数据,队尾插入数据。 (2)给定固定的空间,使用过程中不…

九联UNT403HS_海思MV320处理器_安卓9-优盘强刷刷机包

九联UNT403HS_海思MV320处理器_安卓9-优盘强刷刷机包前言:九联UNT403HS,海思MV320芯片,已知有2种内存型号,分别是28G和216G。已知河南融合版本是28G,广东版好像既有28G又有216G。理论上固件没有本质区分,能…

Xilinx高性能低延时PCIe-DMA控制器IP,SGDMA,QDMA,RDMA,CDMA,V4L2驱动,视频采集、AD采集

Multi-Channel High Performance PCIe QDMA&RDMA IP介绍基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道、高性能Continous(CDMA)或Scather Gather DMA(SGDMA&#xf…

10、Docker Compose 安装 MySQL

🐳 使用 Docker Compose 安装 MySQL(含配置详解与常见问题)标签:#DockerCompose #MySQL #数据库部署 #后端开发 #运维入门 #配置详解 适合读者:开发者、DevOps、新手运维人员📌 一、前言 在日常开发与部署中…

Dynamic A(D)算法深度剖析:动态环境下的路径规划革新

Dynamic A*(D*)算法深度剖析:动态环境下的路径规划革新 文章目录 Dynamic A*(D*)算法深度剖析:动态环境下的路径规划革新 1. 引言:动态路径规划的核心挑战与解决方案 1.1 动态环境的本质特征 1.2 D * 算法的诞生与核心价值 2. D * 算法核心原理深度解析 2.1 反向搜索机制…

前端框架Vue3(四)——组件通信及其他API

组件通信组件关系传递方式父传子1. props2. v-model3. $refs4. 默认插槽、具名插槽子传父1.props2.自定义事件3.v-model4.parent5.作用域插槽祖传孙、孙传祖1.$attrs2.provide、inject兄弟间、任意组件间1.mitt2.pinia【props】 概述:props是使用频率最高的一种通信…

07【C++ 初阶】类和对象(中篇) --- 类的默认成员函数

文章目录前言类的6个默认成员函数1.构造函数1.1 构造函数特性1.1.1 函数名与类名相同1.1.2 无返回值1.1.3 对象实例化时编译器自动调用对应的构造函数1.1.4 构造函数可以重载1.1.5 默认构造只能有一个1.1.6 默认构造的必要性1.2 构造函数的初始化列表2.析构函数2.1 析构函数特性…

第二次CISSP考试通过!

今天我终于临时通过了 CISSP 考试!这第二次的精神压力一点也不比第一次小。我在第 101 道题 时通过,还剩大约 30 分钟。我当时真的以为自己又要像上次那样时间不够了。第一次考试的失败经历:第一次考试是我刚参加完为期 5 天的强化 Boot Camp…

USRP捕获手机/路由器数据传输信号波形(上)

目录: USRP捕获手机/路由器数据传输信号波形(上) USRP捕获手机/路由器数据传输信号波形(中) USRP捕获手机/路由器数据传输信号波形(下) 一、前期准备 1.1 场景与系统 手机、路由器与天线的…

基于STM32F103的FM1702驱动程序

基于STM32F103微控制器与复旦微电子FM1702SL射频读卡芯片的驱动开发方案,整合了硬件配置、寄存器操作和通信协议实现:一、硬件连接设计 1. 管脚映射表FM1702SL引脚STM32F103引脚功能说明VDD3.3V电源输入GNDGND地线SCKPA5(SPI1_SCK)SPI时钟MISOPA6(SPI1_M…

京东商品评论API指南

一、引言京东商品评论API(JD.item_review)是京东开放平台提供的重要接口,允许开发者获取商品的详细评论数据。通过该接口可以获取包括评论内容、评分、评论时间、用户昵称等信息,为商品分析、用户行为研究等提供数据支持‌。二、接口概述1. 接口基本信息…

网络编程概述与UDP编程

一、 网络编程概述 1.1 概述 在现代软件开发与系统交互场景里,基于 Socket 的网络多进程通信占据核心地位,其适用场景广泛且深入到各类数字化交互中: 直播场景:主播端通过 Socket 建立的网络连接,将音视频流以数据包…