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

2024-06-04 5862阅读

目录

  • 前言
  • 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 端口的字样,以确认该端口的服务正常运行。

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

        2.2 启动8081端口的tomcat服务

        随后,为了启动第二个 Tomcat 服务,对其配置文件进行了修改。通过修改 server.xml 文件中的端口配置,将原本的 8005、8080、8009 分别更改为 8015、8081、8019,确保端口号唯一性并避免冲突。启动 Tomcat 后,确认在 8081 端口上成功启动了第二个服务,并在其 webapps 目录下创建了名为 “vod” 的文件夹,并添加了名为 “a.html” 的测试文件。文件内容反映了连接到 8081 端口的字样,用以验证该端口服务的正常运行。

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

        这样的设置允许我们在不同端口上分别启动并验证了两个独立的 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 服务。

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

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

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

              结语

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


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]