实战指南:使用 Nginx 反向代理实现多端口跳转

目录

  • 前言
  • 1 实现的效果
  • 2 准备两个tomcat服务
    • 2.1 启动8080端口的tomcat服务
    • 2.2 启动8081端口的tomcat服务
  • 3 Nginx 配置
    • 3.1 配置内容
    • 3.2 配置说明
    • 3.3 location符号的含义和作用
  • 4 开放防火墙端口
  • 5 测试与验证
  • 结语

前言

在现代 Web 开发中,Nginx作为一款高性能的开源反向代理服务器,提供了强大的功能来管理网络流量和路由。本文将介绍如何利用 Nginx 的反向代理功能,将不同路径的请求转发到不同端口的 Tomcat 服务上,以实现多端口跳转的效果。

1 实现的效果

使用 Nginx 的强大反向代理功能,我们能够根据访问路径轻松地将请求分发到不同端口的服务上。设置 Nginx 监听在端口号 9001 上。
当访问 http://192.168.17.129:9001/edu/ 时,请求将直接转发到本地地址 127.0.0.1 的 8080 端口上;
而当访问 http://192.168.17.129:9001/vod/ 时,则会直接跳转到本地地址 127.0.0.1 的 8081 端口上。
这种配置方式让我们能够实现基于路径的定向请求转发,为服务架构的灵活性和性能优化提供了一种简便而有效的方式。

2 准备两个tomcat服务

准备两个 tomcat 服务,一个 8080 端口,一个 8081 端口。

2.1 启动8080端口的tomcat服务

在配置两个 Tomcat 服务时,首先启动了一个监听在 8080 端口上的 Tomcat 服务。这一步简单直接,仅需启动 Tomcat 即可。在确保启动成功后,创建了一个名为 “edu” 的目录,并在其中添加了一个名为 “a.html” 的测试文件,文件内容体现了连接到 8080 端口的字样,以确认该端口的服务正常运行。
在这里插入图片描述

2.2 启动8081端口的tomcat服务

随后,为了启动第二个 Tomcat 服务,对其配置文件进行了修改。通过修改 server.xml 文件中的端口配置,将原本的 8005、8080、8009 分别更改为 8015、8081、8019,确保端口号唯一性并避免冲突。启动 Tomcat 后,确认在 8081 端口上成功启动了第二个服务,并在其 webapps 目录下创建了名为 “vod” 的文件夹,并添加了名为 “a.html” 的测试文件。文件内容反映了连接到 8081 端口的字样,用以验证该端口服务的正常运行。
在这里插入图片描述
这样的设置允许我们在不同端口上分别启动并验证了两个独立的 Tomcat 服务。通过这种配置,我们为接下来的 Nginx 反向代理设置奠定了基础,以便根据路径来将请求定向到不同的 Tomcat 服务上。

3 Nginx 配置

在 Nginx 的配置文件 nginx.conf 中,我们新增了一个 server 块来设置反向代理规则。以下是配置内容的解释和说明。

3.1 配置内容

server {
    listen 9001;  # 监听端口 9001
    server_name 192.168.17.129;  # 服务器 IP

    location /edu/ {
        proxy_pass http://127.0.0.1:8080;  # 将 /edu/ 路径映射到 8080 端口的 Tomcat
    }

    location /vod/ {
        proxy_pass http://127.0.0.1:8081;  # 将 /vod/ 路径映射到 8081 端口的 Tomcat
    }
}

3.2 配置说明

listen: 指定 Nginx 监听的端口号为 9001,即这个配置生效于访问该端口的请求。
server_name: 指定服务器的名称或 IP 地址,该项设置为 192.168.17.129。
location: 定义了不同路径的匹配规则。
location ~ /edu/: 使用正则表达式匹配以 /edu/ 开头的路径。~ 表示开启正则匹配。
location ~ /vod/: 同样使用正则表达式匹配以 /vod/ 开头的路径。

  • /edu/: 匹配以 /edu/ 开头的路径,将请求转发至 http://127.0.0.1:8080

  • /vod/: 匹配以 /vod/ 开头的路径,将请求转发至 http://127.0.0.1:8081

3.3 location符号的含义和作用

~: 在 location 指令中表示开启正则表达式匹配。对应的路径会被视为正则表达式,以实现更灵活的路径匹配。
~*: 类似于 ~,但它表示执行大小写不敏感的正则匹配。
=: 精确匹配指定的路径。例如,location = /path 表示只匹配精确路径 /path。
^~: 表示在正则匹配前缀的情况下,如果路径与 ^~ 后面的字符串匹配,则不再进行正则匹配,而是直接使用这个规则。通常用于避免正则匹配对其他规则产生影响。
这些符号能够帮助在 Nginx 配置文件中更精细地定义不同路径的匹配规则,以实现灵活的请求转发和路由功能。

4 开放防火墙端口

确保防火墙已开放对外访问的端口号 9001、8080 和 8081:

firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload

这些命令的执行确保了系统防火墙对外部网络的访问限制已经放开,允许外部网络通过 TCP 协议访问指定的 9001、8080 和 8081 三个端口。这对于 Nginx 服务监听在这些端口上,并进行反向代理转发请求是必要的设置。

5 测试与验证

启动 Nginx,并访问以下地址进行测试。

  • 访问 http://192.168.17.129:9001/edu/,将跳转到 8080 端口的 Tomcat 服务。

在这里插入图片描述

  • 访问 http://192.168.17.129:9001/vod/,将跳转到 8081 端口的 Tomcat 服务。

在这里插入图片描述

结语

通过本文的介绍和配置,你已经学会如何利用 Nginx 的反向代理功能,根据不同路径将请求转发至不同的 Tomcat 服务。这种方式可以实现更灵活的流量管理和负载均衡,为 Web 应用的部署和扩展提供了便利。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FL Studio 21.2.2.3914破解补丁含FL Studio2024 Crack文件及怎么激活FL Studio

FL Studio 21.2.2.3914中文破解版国人习惯称水果编曲, 是一个完整的电音软件音乐制作环境或数字音频工作站。是现在流行的数字音频工作站之一,包括撰写,整理,记录,编辑,电音,混音和掌握专业品质的音乐。 FL Studio 21.2.2.3914 (Windows)原版安装程序破解补丁 软件全名&#x…

索引与优化原理(上)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上一篇,我们…

ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析

文章主要谈及主流ToolLLM 以及高口碑Agent 在调用Tools上的一些对比,框架先上,内容会不断丰富与更新。 第一部分,ToolLLM model 先来说主打Function Call 的大模型们 OpenAI GPT 宇宙第一LLM,它的functionCall都知道&#xff0…

nrm 的使用 可以快速切换下载(npm)镜像,解决资源下载慢和运行失败

nrm是什么? 介绍 nrm(npm registry manager) 是 npm 的镜像源管理工具. 有时候国外资源太慢,使用 nrm 可以快速的在 npm 源之间切换 安装 npm install -g nrm 基本使用 查看可选择的源 nrm ls 切换到对应的镜像源 nrm use 对应的镜像 删除镜像源 nrm del 名字 …

数据挖掘目标(客户价值分析)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as snsIn [2]: datapd.read_csv(r../教师文件/air_data.csv)In [3]: data.head()Out[3]: Start_timeEnd_timeFareCityAgeFlight_countAvg_discountFlight_mileage02011/08/182014/0…

网络入门---守护进程

目录标题 什么是守护进程会话的理解setsid函数daemonSelf函数模拟实现测试 什么是守护进程 在前面的学习过程中我们知道了如何使用TCP协议和UDP协议来实现通信,比如说登录xshell运行了服务端: 然后再登录一个xshell运行客户端并向服务端发送信息&#…

笔记本电脑如何安装openwrt

环境: 联想E14笔记本 装机U盘 DiskImage v1.6 刷写工具 immortalwrt镜像 问题描述: 笔记本电脑如何安装openwrt 解决方案: 一、官方版 1.官网下载固件 2.BIOS关闭安全启动改为引导 3.用U盘启动进入PE系统后,需要先用PE系…

国产浪潮服务器:风扇免手动调节脚本

简介:浪潮集团,是中国本土顶尖的大型IT企业之一,中国领先的云计算、大数据服务商。浪潮集团旗下拥有浪潮信息、浪潮软件、浪潮国际,业务涵盖云计算、大数据、工业互联网等新一代信息技术产业领域,为全球120多个国家和地…

JNA实现JAVA调用C/C++动态库

1.JNA JNA全称Java Native Access,是一个建立在经典的JNI技术之上的Java开源框架(https://github.com/twall/jna)。JNA提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而…

计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)

目录 回退N帧协议GBN 介绍 无差错情况 累积确认 有差错情况 发送窗口尺寸 小结 练习 解析 示意图 上篇中所介绍的停止-等待协议的信道利用率很低;若出现超时重传,则信道利用率更低。 如果发送方在收到接收方的确认分组之前可以连续发送多个数…

Leetcode—2413.最小偶倍数【简单】

2023每日刷题(六十) Leetcode—2413.最小偶倍数 class Solution { public:int smallestEvenMultiple(int n) {return (n % 2 1) * n;} };运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏…

局域网环境下的ntp对时

服务端: 此处为v4-sp4服务器 安装ntp,apt-get install ntp -y ,若为离线环境,则安装ntp和libopts25两个包。 配置: 在/etc/ntp.conf的配置文件里 加入 restrict default nomodify notrap noquery restrict 127.0.0.1 rest…

libxlsxwriter - 编译

文章目录 libxlsxwriter - 编译概述笔记编译环境编译思路编译安装组件写个测试程序, 看看编译的组件是否好使END libxlsxwriter - 编译 概述 想换一个新版的libxlsxwriter, 自己编译一个出来. libxlsxwriter依赖zlib, 前面已经成功编译了zlib(zlib - 编译). 笔记 libxlsxwr…

大模型Transformer 推理 :kvCache原理浅析

大模型Transformer 推理 :kvCache原理浅析 kvCache 原理 在采样时,Transformer模型会以给定的提示/上下文作为初始输入进行推理(可以并行处理),然后逐一生成额外的标记来继续完善生成的序列(体现了模型的自回归性质)。在采样过程中,Transformer会执行自注意力操作,为…

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码

目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…

C++中STL的概念——零基础/小白向,适合竞赛,初学C++者使用

目录 1.STL的诞生 2. STL的基本概念 3. STL六大组件 4. STL容器,算法,迭代器 容器:存放数据的地方 算法:解决问题的方法 迭代器:容器和算法之间的桥梁 5. STL初始:打印0 ~ 9 的数字 这篇文章是一篇…

day34算法训练|贪心算法

1005.K次取反后最大化的数组和 两次贪心算法思路 1. 数组中有负数时,把绝对值最大的负数取反 2. 数组全为非负数时,一直取反最小的那个数 步骤: 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小…

云仓酒庄为您甄选西班牙葡萄酒

西班牙是一个拥有悠久葡萄酒酿造与饮用历史的国家,其葡萄酒产量位居世界第三位。云仓酒庄的品牌雷盛红酒分享翻开西班产区地图,不少葡萄酒刚入门的朋友会感到头疼,众多产区、分级制度、陈年标准,想要短时间内搞懂实在不容易。不用…

案例069:基于微信小程序的计算机实验室排课与查询系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中,经常会…