一、若依经典版(war)部署
1.1 整体架构

1.2 服务器规划
操作环境Rocky9
| db-mysql | MySQL 数据库服务器 | 10.0.0.160 | MySQL 8.x |
| db-redis | Redis 缓存服务器 | 10.0.0.140 | Redis 6.x / 7.x |
| ruoyi-java1 | 应用服务器 | 10.0.0.120 | JDK 8 + Tomcat 9 |
1.3 服务器配置
1.3.1 基础配置
# 1.配置主机名(每台服务器执行对应的)
hostnamectl set-hostname db-mysql
hostnamectl set-hostname db-redis
hostnamectl set-hostname ruoyi-java1
# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.160/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
# 依次为10.0.0.140 10.0.0.120
# 3.配置主机名解析(所有服务器都执行)
sudo tee -a /etc/hosts <<"EOF"
> 10.0.0.160 db-mysql
> 10.0.0.140 db-redis
> 10.0.0.120 ruoyi-java1
> EOF
# 验证解析
ping -c1 db-mysql
ping -c1 db-redis
ping -c1 ruoyi-java1
# 4.配置yum源(阿里云镜像)
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \\
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \\
-i /etc/yum.repos.d/rocky*.repo
# 安装并替换 EPEL 源
sudo dnf -y install epel-release
sudo sed -e 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|g' \\
-e 's|^metalink|#metalink|g' \\
-i \\
/etc/yum.repos.d/epel*
# 5.安装基础软件包
dnf -y install vim bash-completion wget net-tools lrzsz tar git
# 6.关闭防火墙和SELinux(简化实验环境)
systemctl disable –now firewalld
setenforce 0
sed -i -e '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
1.3.2 MySql部署
# 1.克隆若依项目(获取SQL文件)JDK 8 使用sprinboot2
git clone -b springboot2 https://gitee.com/y_project/RuoYi.git
# 2.安装MySQL
dnf install mysql-server -y
systemctl enable mysqld –now
# 3.创建用户
mysql -u root << 'EOF'
> CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ruoyi'@'10.0.0.%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON ruoyi.* TO 'ruoyi'@'10.0.0.%';
FLUSH PRIVILEGES;
EOF

# 4.导入ruoyi的初始数据(根据实际文件名称)
[wangchen@db-mysql ~]$ ls RuoYi/sql/
quartz.sql ruoyi.html ruoyi.pdm ry_20260319.sql
mysql -u root ruoyi < RuoYi/sql/ry_20260319.sql
mysql -u root ruoyi < RuoYi/sql/quartz.sql
# 5. 验证数据导入是否成功(从应用服务器连接测试,在ruoyi-java1上执行)
dnf -y install mysql
mysql -u ruoyi -p -h db-mysql ruoyi -e 'show tables;'
-u 指定用户名 -p 输入密码(后面没有跟密码值,执行后会交互式提示输入,带密码时中间不要空格)
-e 执行 SQL 语句后退出 -h 指定服务器主机名
1.3.3 Redis部署
# 1.安装Redis
sudo dnf install redis -y
# 2.配置Redis(允许远程访问 + 设置密码)
sudo sed -i '/^bind 127.0.0.1/cbind 0.0.0.0' /etc/redis/redis.conf
sudo sed -i '/^# requirepass/crequirepass 123456' /etc/redis/redis.conf
-i 修改原文件内容 c 替换/更改整行 bind 0.0.0.0 监听所有网段
# 3.启动Redis
sudo systemctl enable redis.service –now
# 4. 验证服务是否可用(从应用服务器连接测试,在ruoyi-java1上执行)
sudo dnf -y install redis
# 带明文密码输入
redis-cli -h db-redis -p 6379 -a 123456 ping
# 不带明文密码需要输入
redis-cli -h db-redis -p 6379 -a ping
AUTH 123456 #'认证密码'
# 输出:PONG
redis-cli Redis 命令行客户端工具 -p 6379 指定 Redis 端口(6379 是默认端口) -a 指定认证密码(需要空格)
1.4 部署应用服务器
1.4.1 安装JDK和Tomcat
# 1.安装JDK(Jdk8兼容tomcat9)
sudo dnf install -y java-1.8.0-openjdk-devel
[wangchen@ruoyi-java1 ~]$ java -version
openjdk version "1.8.0_504"
OpenJDK Runtime Environment (build 1.8.0_504-b01)
OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
[wangchen@ruoyi-java1 ~]$ javac -version
javac 1.8.0_504
# 2.安装Tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.121/bin/apache-tomcat-9.0.121.tar.gz
sudo tar xaf apache-tomcat-9.0.121.tar.gz -C /usr/local/
# 创建一个软链接目的是简化路径引用和方便版本管理
sudo ln -s /usr/local/apache-tomcat-9.0.121/ /usr/local/tomcat
# 3.创建专用服务用户(权限最小化,安全)
sudo useradd -r -s /sbin/nologin tomcat # -r 创建系统用户 -s 指定登陆shell(不登陆)
sudo chown -R tomcat:tomcat /usr/local/tomcat/
# 4.创建systemd服务文件
sudo tee /etc/systemd/system/tomcat.service << 'EOF' > /dev/null
> [Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
Environment="CATALINA_HOME=/usr/local/tomcat"
Environment="CATALINA_BASE=/usr/local/tomcat"
Environment="CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
-
Type=forking: 告诉 systemd startup.sh 会 fork 出子进程后退出父进程。systemd 通过 PID 文件跟踪真正的 Tomcat 主进程。这是 Tomcat 传统启动脚本的固定搭配
-
JAVA_HOME: 指定 JDK 路径,startup.sh 依赖此变量找到 Java
-
CATALINA_HOME/BASE: Tomcat 安装目录和实例目录(单实例时两者相同)
-
CATALINA_PID: ⭐ 关键! 与 Type=forking 配合,systemd 通过读取此文件获取 Tomcat 主进程 PID,从而正确判断服务状态、执行停止操作
-
ExecStart: 启动命令
-
ExecStop: 停止命令(systemctl stop 时调用优雅关闭)
-
Restart=on-failure: 仅在非正常退出(崩溃、信号终止等)时自动重启,手动 stop 不会触发重启
-
RestartSec=10: 重启前等待 10 秒,避免频繁重启风暴
-
执行 systemctl enable tomcat 后,Tomcat 会在系统进入 multi-user.target(标准多用户模式,相当于传统 runlevel 3)时自动启动
# 5.启动Tomcat并验证是否启动
sudo systemctl daemon-reload
sudo systemctl enable –now tomcat.service
sudo systemctl status tomcat.service
sudo netstat -tnlp | grep 8080
# 6.验证访问
curl http://ruiyi-java1:8080/
#windows配置hosts解析后浏览器正常访问tomcat首页(需带:8080)
10.0.0.120 ruoyi.wangchen.com
1.4.2 编译打包若依war包
# 1.克隆若依项目
git clone -b springboot2 https://gitee.com/y_project/RuoYi.git
cd RuoYi/
# 2.数据库配置连接(连接MySQL)
sudo vim ruoyi-admin/src/main/resources/application-druid.yml

# 3.Redis配置连接(连接Redis)
sudo vim ruoyi-admin/src/main/resources/application.yml

# 4. 修改pom.xml,打包成WAR(注意:默认是JAR)
sudo vim ruoyi-admin/pom.xml

# 5. 修改启动类(让Spring Boot支持WAR部署)
sudo vim ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
# :%d删除全文后粘贴
package com.ruoyi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class RuoYiApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(RuoYiApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(RuoYiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ ");
}
}
# 6.安装maven并打包
sudo dnf -y install maven
java -version
openjdk version "17.0.20.1" 2026-08-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS, mixed mode, sharing)
# 安装maven自动绑定Java,自动下载jdk17不兼容tomcat9
# 如何确认你的 WAR 包需要哪个 JDK
<!— 若依项目根 pom.xml —>
<java.version>1.8</java.version>
<!— 或 —>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
# 修改全局环境变量Java指向8版本
sudo tee /etc/profile.d/java.sh << 'EOF'
> export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile.d/java.sh # 立即生效
# 版本正确
java -version
openjdk version "1.8.0_504"
OpenJDK Runtime Environment (build 1.8.0_504-b01)
OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
# 修改日志文件路径
sudo mkdir -p /usr/local/tomcat/logs/ruoyi
sudo chown -R tomcat:tomcat /usr/local/tomcat/logs/ruoyi
sed -i 's|<property name="log.path" value=".*" />|<property name="log.path" value="/usr/local/tomcat/logs/ruoyi" />|' ruoyi-admin/src/main/resources/logback.xml
# 打包(跳过测试)
mvn clean package -Dmaven.test.skip=true
clean 清理阶段。删除上一次构建生成的 target 目录,确保本次构建是从零开始,避免旧文件残留导
package 打包阶段。将项目编译、测试(如果没跳过)、打包成可部署的构件(若依项目通常会生成 .jar 或 .war 文件)。
-Dmaven.test.skip=true 彻底跳过整个测试阶段。
-Dmaven.test.skip=true 与 -DskipTests 的区别
| -Dmaven.test.skip=true | 不编译 | 不执行 | 最快 |
| -DskipTests | 会编译 | 不执行 | 较快 |

# 打包成功后,WAR包位置:
ls ruoyi-admin/target/ruoyi-admin.war
ruoyi-admin/target/ruoyi-admin.war
1.4.3 部署WAR包到Tomcat
# 1. 查看Tomcat webapps目录
sudo ls /usr/local/tomcat/webapps/
# 2. 将WAR包复制到Tomcat的webapps目录
sudo cp ruoyi-admin/target/ruoyi-admin.war /usr/local/tomcat/webapps/
# 3. Tomcat会自动解压并部署
sudo ls /usr/local/tomcat/webapps/
docs examples host-manager manager ROOT ruoyi-admin ruoyi-admin.war
# 4. 观察日志确认部署成功
sudo tail -f /usr/local/tomcat/logs/catalina.out

1.5 验证部署
打开浏览器,ruoyi.wangchen.com:8080/ruoyi-admin 访问

二、若依Vue版部署(JAR包)
2.1 整体架构

2.2 服务器规划
| 接入层 | ruoyi-web1 | 10.0.0.113 | Nginx | 80/443 | 反向代理、静态资源 |
| 应用层 | ruoyi-java1 | 10.0.0.120 | 依JAR | 8080 | 业务逻辑 |
| 缓存层 | db-redis | 10.0.0.140 | Redis | 6379 | 会话管理、缓存 |
| 数据层 | db-mysql | 10.0.0.160 | MySQL | 3306 | 数据持久化 |
2.3 服务器配置
2.3.1 基础配置
# 1.配置主机名
hostnamectl set-hostname ruoyi-web1
# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.113/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
# 2.配置主机名解析
# 3.配置yum源(阿里云镜像)
# 4. 安装基础软件包
# 5. 关闭防火墙和SELinux(简化实验环境)
# 以上操作步骤同上“1.3服务器部署”
2.3.2 MySQL部署
# 1.删除之前的Ruoi文件
rm -rf RuoYi/
# 2.克隆若依Vue版项目
git clone https://gitee.com/y_project/RuoYi-Vue.git
# 3.安装MySQL(已安装)
# 4.创建数据库和用户(需要删除若依经典版数据库文件,创建ruoyi-vue库,及获取权限给ruoyi)
mysql -u root -p -e 'drop database ruoyi'
mysql -u root << 'EOF'
CREATE DATABASE IF NOT EXISTS `ruoyi-vue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON `ruoyi-vue`.* TO 'ruoyi'@'10.0.0.%';
FLUSH PRIVILEGES;
EOF
# 5.导入vue版的数据
mysql -u root ruoyi-vue < RuoYi-Vue/sql/ry_20260417.sql
mysql -u root ruoyi-vue < RuoYi-Vue/sql/quartz.sql
# 6.从应用服务器连接测试
mysql -u ruoyi -p -h db-mysql ruoyi-vue -e 'show tables'
2.3.3 Redis部署
# 1. 安装Redis
dnf install redis -y
# 2. 配置Redis(允许远程访问 + 设置密码)
sed -i '/^bind 127.0.0.1/cbind 0.0.0.0' /etc/redis/redis.conf
sed -i '/^# requirepass/crequirepass 123456' /etc/redis/redis.conf
# 3. 启动Redis
systemctl enable redis –now
# 4. 从应用服务器连接测试(在ruoyi-java1上执行)
dnf -y install redis
redis-cli -h db-redis -p 6379 -a YANGge123@ ping
# 输出:PONG
# 同上1.3.3操作步骤
2.4 后端部署
2.4.1 基于RuoYi-Vue构建JAR包
# 1.克隆若依Vue项目
git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue
# 2.修改数据库配置
vim ruoyi-admin/src/main/resources/application-druid.yml

# 3.修改Redis配置
vim ruoyi-admin/src/main/resources/application.yml

# 4.创建部署目录和服务用户
sudo useradd -r -s /sbin/nologin ruoyi
sudo mkdir -p /opt/ruoyi-vue/app /var/log/ruoyi-vue /opt/ruoyi-vue/config /opt/ruoyi-vue/upload
sudo chown -R ruoyi:ruoyi /opt/ruoyi-vue /var/log/ruoyi-vue
# 5.修改日志目录
sed -i 's|<property name="log.path" value=".*" />|<property name="log.path" value="/var/log/ruoyi-vue" />|' ruoyi-admin/src/main/resources/logback.xml
# 修改全局环境变量Java指向17版本(确保Java版本是17)
java -version
sudo tee /etc/profile.d/java.sh << 'EOF'
> export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile.d/java.sh # 立即生效
# 6.安装Maven
sudo dnf -y install maven
mvn clean package -DskipTests
# 7.部署到目录
sudo cp ruoyi-admin/target/ruoyi-admin.jar /opt/ruoyi-vue/app/
2.4.2 创建外部配置文件(生产环境推荐)
# 1. 创建外部配置
sudo tee /opt/ruoyi-vue/config/application.yml << 'EOF'
spring:
profiles:
active: prod,druid
EOF
sudo tee /opt/ruoyi-vue/config/application-prod.yml << 'EOF'
spring:
datasource:
druid:
master:
url: jdbc:mysql://db-mysql:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ruoyi
password: 123456
data:
redis:
host: db-redis
port: 6379
password: 123456
ruoyi:
profile: /opt/ruoyi-vue/upload
logging:
file:
name: /opt/ruoyi-vue/logs/ruoyi.log
level:
com.ruoyi: info
org.springframework: warn
EOF
2.4.3 创建Systemd服务(生产部署)
# 1. 创建Systemd服务文件
sudo tee /etc/systemd/system/ruoyi-vue.service << 'EOF'
[Unit]
Description=RuoYi Vue Backend Service
After=network.target
[Service]
Type=simple
User=ruoyi
Group=ruoyi
WorkingDirectory=/opt/ruoyi-vue
ExecStart=/usr/bin/java \\
-Xms512m \\
-Xmx1024m \\
-XX:+HeapDumpOnOutOfMemoryError \\
-XX:HeapDumpPath=/opt/ruoyi-vue/logs/heapdump.hprof \\
-Dfile.encoding=UTF-8 \\
-jar /opt/ruoyi-vue/app/ruoyi-admin.jar \\
–spring.config.additional-location=file:/opt/ruoyi-vue/config/ \\
–spring.profiles.active=prod,druid
SuccessExitStatus=143
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment="TZ=Asia/Shanghai"
[Install]
WantedBy=multi-user.target
EOF
# 2. 启动服务
sudo systemctl daemon-reload
sudo systemctl enable ruoyi-vue –now
# 3. 查看状态
sudo systemctl status ruoyi-vue -l
journalctl -u ruoyi-vue -f

2.5 部署前端
若依(RuoYi-Vue)前端是典型的 Vue 项目,部署核心步骤是:安装Node.js → 打包 → 上传dist → Nginx配置。
2.5.1 安装Node.js 18(若依推荐)
sudo dnf module reset nodejs -y #更新模块流数据
sudo dnf module enable nodejs:18 -y #指定模块流nodejs版本为18
sudo dnf install nodejs npm -y #使用模块流下载nodejs npm
node -v
npm -v
2.5.2 克隆若依Vue版并打包前端
git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue/
git checkout -b ruoyi392 v3.9.2 # 基于标签 v3.9.2 创建新分支新版ruoyi中删除了ui文件
cd RuoYi-Vue/ruoyi-ui/
# 配置npm镜像源(加速)
npm config set registry https://registry.npmmirror.com
# 安装依赖并打包(生产环境)
npm install
npm run build:prod
2.5.3 查看打包产物
ls dist/
# favicon.ico html index.html index.html.gz robots.txt static styles
# 4. 安装Nginx
sudo dnf install -y nginx
sudo systemctl enable nginx –now
# 5. 部署前端文件
sudo mkdir -p /opt/ruoyi/dist
sudo cp -r dist/* /opt/ruoyi/dist/
# 6. 设置权限
chown -R nginx:nginx /opt/ruoyi/dist
chmod -R 755 /opt/ruoyi/dist
2.5.4 Nginx配置
sudo tee /etc/nginx/conf.d/ruoyi-vue.conf << 'EOF'
upstream ruoyi_backend {
server ruoyi-java1:8080;
keepalive 32;
}
server {
listen 80;
server_name ruoyi.wangchen.com;
client_max_body_size 100m;
# ===== 前端静态资源 =====
location / {
root /opt/ruoyi/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# ===== 后端 API 代理 =====
location /prod-api/ {
proxy_pass http://ruoyi_backend/;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# ===== 上传文件路径 =====
location /profile/ {
alias /opt/ruoyi/uploadPath/;
}
}
EOF
# 验证并重载Nginx
sudo nginx -t
sudo systemctl reload nginx
2.6 验证部署
修改本地 hosts 文件,将 ruoyi.wangchen.com 解析到 ruoyi-web1 服务器IP(10.0.0.113),然后访问
http://ruoyi.wangchen.com
三、若依vue后端扩容
3.1 整体架构

3.2 服务器规划
| 接入层 | ruoyi-web1 | 10.0.0.113 | Nginx | 80/443 | 反向代理、静态资源 |
| 应用层 | ruoyi-java1 | 10.0.0.120 | 若依JAR | 8080 | 业务逻辑 |
| 应用层 | ruoyi-java2 | 10.0.0.121 | 若依JAR | 8080 | 业务逻辑 |
| 应用层 | ruoyi-java3 | 10.0.0.122 | 若依JAR | 8080 | 业务逻辑 |
| 缓存层 | db-redis | 10.0.0.120 | Redis | 6379 | 会话管理、缓存 |
| 数据层 | db-mysql | 10.0.0.160 | MySQL | 3306 | 数据持久化 |
3.3 服务器配置
3.3.1 基础配置
# 1.配置主机名
hostnamectl set-hostname ruoyi-java2
hostnamectl set-hostname ruoyi-java3
# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.121/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
10.0.0.122
# 2.配置主机名解析
# 3.配置yum源(阿里云镜像)
# 4. 安装基础软件包
# 5. 关闭防火墙和SELinux(简化实验环境)
# 以上操作步骤同上“1.3服务器部署”
3.3.2 安装Java环境
sudo dnf -y install java-17-openjdk
java -version
openjdk version "17.0.20.1" 2026-08-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS, mixed mode, sharing
3.3.3 复制jar包到新后端节点
# 1. ruoyi-java2 ruoyi-java3准备相应服务用户及目录
sudo useradd -r -s /sbin/nologin ruoyi
sudo mkdir -p /opt/ruoyi-vue/app /var/log/ruoyi-vue /opt/ruoyi-vue/config /opt/ruoyi-vue/upload
sudo chown -R ruoyi:ruoyi /opt/ruoyi-vue /var/log/ruoyi-vue
# 2. 复制 ruoyi-admin.jar 到 ruoyi-java1 ruoyi-java2
sudo scp /opt/ruoyi-vue/app/ruoyi-admin.jar wangchen@ruoyi-java3:/home/wangchen/
sudo scp /opt/ruoyi-vue/app/ruoyi-admin.jar wangchen@ruoyi-java3:/home/wangchen/
sudo cp ruoyi-admin.jar /opt/ruoyi-vue/app/
3.3.4 创建外部配置文件
同上
3.3.5 创建Systemd服务
同上
3.4 配置 Nginx 负载均衡(ruoyi-web1)
sudo vim /etc/nginx/conf.d/ruoyi-vue.conf

3.4 测试
# 1. 停止 ruoyi-java1
#访问正常
# 2. 停止 ruoyi-java2
#访问正常
# 3. 停止 ruoyi-java3
#访问正常
#当后端所有节点均停止,产生502网关错误
四、实现HTTPS
4.1 证书申请
# 1.环境准备
sudo dnf install -y openssl ca-certificates
# 2. 创建目录并生成根CA
sudo mkdir -p /opt/ca && cd /opt/ca
sudo openssl req -x509 -new -nodes -newkey rsa:4096 -keyout ca.key -out ca.crt \\
-days 3650 -sha256 -subj "/C=CN/ST=Beijing/L=Beijing/O=MageEdu/OU=IT/CN=MageEdu Root CA"
chmod 400 ca.key
# 3. 生成私钥 + CSR(SAN写 *.wangchen.com)
sudo openssl req -new -nodes -out wangchen.csr -keyout wangchen.key \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=MageEdu/OU=IT/CN=*.wangchen" \\
-addext "subjectAltName=DNS:*.wangchen.com,DNS:wangchen.com"
# 4. 用原有的 ca.crt 和 ca.key 签发证书
sudo openssl x509 -req -in wangchen.csr -CA ca.crt -CAkey ca.key \\
-CAcreateserial -out wangchen.crt -days 365 -copy_extensions copy
# 5. 验证 SAN 是否生效
openssl x509 -in wangchen.crt -text -noout | grep -A 3 "Subject Alternative Name"
4.2 配置Nginx
sudo vim /etc/nginx/conf.d/proxy-lb.conf
upstream yangge {
#ip_hash;
server ruoyi-java1:8080 weight=1 max_fails=3 fail_timeout=30s;
server ruoyi-java2:8080 weight=1 max_fails=3 fail_timeout=30s;
server ruoyi-java3:8080 weight=1 max_fails=3 fail_timeout=30s;
}
# ===== HTTP 跳转 HTTPS =====
server {
listen 80;
server_name www.wangchen.com wangchen.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name www.wangchen.com wangchen.com;
ssl_certificate /opt/ca/wangchen.crt;
ssl_certificate_key /opt/ca/wangchen.key;
client_max_body_size 100m;
# ===== 前端静态资源 =====
location / {
root /opt/ruoyi/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# ===== 后端 API 代理 =====
location /prod-api/ {
proxy_pass http://ruoyi_backend/;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# ===== 上传文件路径 =====
location /profile/ {
alias /opt/ruoyi/uploadPath/;
}
}
sudo nginx -t
sudo systemctl reload nginx
4.3 windows客户端访问
Windows安装ca.crt证书
hosts文件解析
10.0.0.113 wangchen.com www.wangchen.com
浏览器访问
4.4 Linux访问
curl www.wangchen.com -I 查看头信息 -k 跳过证书验证访问 https -L 跟随重定向






