相关推荐recommended
实战指南:使用 Nginx 反向代理实现多端口跳转
作者:mmseoamin日期:2024-02-20

目录

  • 前言
  • 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,并访问以下地址进行测试。