1. 前言

本文 主要通过案例 Nginx 配置 Ruoyi 框架 ,学习反向代理。

准备工作

2. 具体需求

本过程也可以在一台服务器中进行,但为了更好的理解反向代理,本人用到的是两台服务器 server1server2

  • server1 :部署的是 nginx 服务
  • server2 :部署的是后端 jar 服务

实现流程如下:

  • 首先,当客户端通过 http://ip:port/path 进行访问。
  • 然后,当请求达到服务器之后,通过 Nginx 代理 转发到真正的目标服务器上。
  • 最后,返回请求信息。
  • 具体流程如下图

image-20230511161605653

3. Nginx 配置 Ruoyi 框架

具体步骤如下:

  1. server1 :创建 nginx 配置文件,并使其生效。
  2. server2 :修改 ruoyi-admin.jar 中的数据库连接信息,并使其生效。
  3. server1 :通过 crul 命令是否可以访问该端口。
  4. 客户端访问

3.1. 实现步骤

  1. server1 :创建 nginx 配置文件,并使其生效。

    • nginx 配置文件路径 /etc/nginx/cond.d

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      # 虚拟主机server块
      server{

      # 监听端口
      listen 8002;
      # 匹配请求中的host值
      server_name ruoyi.localhost;

      # 监听请求静态资源路径
      location / {
      # 配置代理服务器, 这里 如果是本机就直接使用 http://localhost:port,如果不是就是用目标服务器的 ip + 端口。
      proxy_pass http://server2:port;
      }

      }
    • 刷新 nginx 配置文件

      1
      2
      3
      4
      5
      [root@VM-0-9-centos conf.d]# /usr/sbin/nginx -t 
      nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
      nginx: configuration file /etc/nginx/nginx.conf test is successful
      [root@VM-0-9-centos conf.d]# /usr/sbin/nginx -s reload
      [root@VM-0-9-centos conf.d]#
    • server1 :开放防火墙端口,刷新配置。

      如果为 阿里云 或者 腾讯云 需要配置安全组规则。例如:阿里云-配置安全组规则

      1
      2
      3
      4
      5
      [root@VM-0-9-centos images]# firewall-cmd --zone=public --add-port=8002/tcp --permanent # 开放8002端口
      success
      [root@VM-0-9-centos images]# firewall-cmd --reload # 刷新防火墙配置
      success
      [root@VM-0-9-centos images]#
  2. server2 :修改 ruoyi-admin.jar 中的数据库连接信息,并使其生效。

    • 通过压缩工具打开jar包,可以通过 360压缩 或者 7z 打开

      image-20230511163533665

    • 修改 BOOT-INF\classes 文件下 application-druid.yml 文件中的 数据库连接信息

      关于Linux下的MySQL安装可以参考我的博客 《Linux-Shell-MySQL

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # 数据源配置
      spring:
      datasource:
      type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: com.mysql.cj.jdbc.Driver
      druid:
      # 主库数据源
      master:
      url: jdbc:mysql://server:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
      username: root
      password: P@ssw0rd
      ......
    • 创建 ry 数据库

      1
      2
      # 创建 ruoyi 数据库 jdbc:mysql://server:3306/ry
      CREATE DATABASE `ry` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
    • 将百度网盘中的 ry_20210924.sql 文件导入 ry 数据库中

      image-20230511164821860

    • 上传至 /home/ruoyi 盘符

      image-20230511170026032

    • 启动项目

      1
      2
      3
      -rw-r--r-- 1 root root 75366452 May 11 16:58 ruoyi-admin.jar
      [root@VM-24-4-centos ruoyi]# nohup java -jar ruoyi-admin.jar &
      [1] 26695
    • 查看日志

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      [root@VM-24-4-centos ruoyi]# tail -f nohup.out 
      ..............
      17:09:07.497 [main] INFO c.r.RuoYiApplication - [logStarted,61] - Started RuoYiApplication in 22.314 seconds (JVM running for 23.97)
      (♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
      .-------. ____ __
      | _ _ \ \ \ / /
      | ( ' ) | \ _. / '
      |(_ o _) / _( )_ .'
      | (_,_).' __ ___(_ o _)'
      | |\ \ | || |(_,_)'
      | | \ `' /| `-' /
      | | \ / \ /
      ''-' `'-' `-..-'
    • 如果为 阿里云 或者 腾讯云 需要配置安全组规则。例如:阿里云-配置安全组规则

      1
      2
      3
      4
      5
      [root@VM-24-4-centos ruoyi]# firewall-cmd --zone=public --add-port=8088/tcp --permanent # 开放8088端口
      success
      [root@VM-24-4-centos ruoyi]# firewall-cmd --reload # 刷新防火墙配置
      success
      [root@VM-24-4-centos ruoyi]#
  3. server1 :通过 crul 命令是否可以访问该端口

    1
    2
    [root@VM-0-9-centos conf.d]# curl http://server2:8088/
    [root@VM-0-9-centos conf.d]#
  4. 客户端进行访问

    image-20230511174435926

4. 参考博文