当前位置: 首页 > news >正文

若依部署实战(二):Windows服务器下Nginx反向代理与前后端分离应用配置详解

1. 环境准备与基础配置

在Windows服务器上部署若依前后端分离项目前,需要先搭建好基础运行环境。我建议使用Windows Server 2019/2022这类服务器专用系统,相比桌面版系统更稳定高效。以下是必备组件清单:

  • JDK 1.8+:推荐使用OpenJDK 11 LTS版本,实测性能提升约20%
  • MySQL 5.7+:若依官方推荐5.7版本,注意要开启大小写敏感设置
  • Redis 5.0+:用于会话管理和缓存,Windows版可直接下载微软维护的安装包
  • Nginx 1.20+:选择Stable版本,解压即用无需安装

这里有个容易踩坑的地方:路径中不要包含中文或空格。我遇到过因为Program Files路径中的空格导致Nginx启动失败的案例。建议将所有组件安装在类似D:\Server这样的纯英文路径下。

配置环境变量时,记得将JDK的bin目录(如D:\Server\jdk-11\bin)加入系统PATH。验证安装是否成功:

java -version nginx -v redis-cli ping

2. 后端项目部署实战

2.1 数据库配置技巧

首先导入若依的SQL脚本(通常位于/sql目录)。建议先用Navicat等工具检查SQL文件编码,避免因UTF-8 BOM头导致导入失败。关键配置点在application-druid.yml

spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ry-vue?useSSL=false&allowPublicKeyRetrieval=true username: root password: YourStrongPassword123!

如果遇到时区问题,可以在url后追加&serverTimezone=Asia/Shanghai。生产环境务必修改默认密码,并创建专用数据库用户而非直接使用root。

2.2 打包与运行优化

使用Maven打包时,建议添加生产环境profile:

mvn clean package -Pprod -DskipTests

生成的ruoyi-admin.jar可以通过以下命令启动:

java -Xms512m -Xmx1024m -jar ruoyi-admin.jar --spring.profiles.active=prod

为了让服务在后台稳定运行,可以创建start.bat脚本:

@echo off start "RuoYi" javaw -Xms512m -Xmx1024m -jar ruoyi-admin.jar --spring.profiles.active=prod exit

3. 前端项目部署要点

3.1 构建生产版本

ruoyi-ui目录下执行构建前,需要检查两个关键文件:

  1. vue.config.js中的publicPath应设置为./
  2. .env.production中的API地址要改为后端服务地址

构建命令:

npm install --registry=https://registry.npmmirror.com npm run build:prod

构建完成后会生成dist目录,将其完整复制到服务器的D:\www\ruoyi-ui目录。注意保持目录结构不变,特别是static文件夹的位置。

4. Nginx反向代理精讲

4.1 核心配置解析

nginx.conf中配置server块时,这几个参数需要特别注意:

server { listen 80; server_name your-domain.com; # 前端静态资源 location / { root D:/www/ruoyi-ui/dist; try_files $uri $uri/ /index.html; index index.html; } # 后端API代理 location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 重要:解决413请求实体过大问题 client_max_body_size 100m; # WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

4.2 性能优化参数

在http块中添加这些配置可以显著提升性能:

# 启用gzip压缩 gzip on; gzip_min_length 1k; gzip_types text/plain application/javascript application/x-javascript text/css; # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; }

5. Windows服务化与运维

5.1 注册为系统服务

使用NSSM工具将Nginx和Java应用注册为服务:

# 安装Nginx服务 nssm install Nginx "D:\Server\nginx\nginx.exe" # 安装Java服务 nssm install RuoYi "D:\Server\jdk-11\bin\java.exe" "-jar D:\www\ruoyi\ruoyi-admin.jar"

服务注册后,可以通过services.msc图形界面或sc命令管理服务状态。

5.2 防火墙配置

确保防火墙放行相关端口:

New-NetFirewallRule -DisplayName "RuoYi-HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow New-NetFirewallRule -DisplayName "RuoYi-Backend" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

6. 常见问题排查指南

  1. 页面刷新404:确保Nginx配置中有try_files $uri $uri/ /index.html
  2. 接口502错误:检查后端服务是否正常运行,以及proxy_pass地址是否正确
  3. 静态资源加载失败:确认root路径是否正确,路径分隔符要用/而非\
  4. 上传文件大小限制:Nginx中配置client_max_body_size,SpringBoot中配置spring.servlet.multipart.max-file-size

7. 安全加固建议

  1. 修改默认的/prod-api路径为自定义路径
  2. 配置HTTPS证书,可以使用Let's Encrypt免费证书
  3. 定期备份数据库和上传目录
  4. 限制管理后台访问IP
location /admin { allow 192.168.1.100; deny all; }

在实际项目中,我还遇到过因Windows权限问题导致Nginx无法读取静态资源的情况。这时需要给IIS_IUSRS用户组赋予对应目录的读取权限。

http://www.jsqmd.com/news/1190113/

相关文章:

  • 2026年北京朝阳用户力荐电脑维修服务 枫筠川科技戴尔官方授权专业可靠 - 本地品牌推荐
  • 告别“人工智障”!用 3 个 Prompt 技巧,让大模型代码生成准确率飙升 300%
  • C++宏定义:从基础语法到高级应用与最佳实践
  • 2026年7月最新乌鲁木齐泰格豪雅官方售后热线及客户服务网点地址 - 亨得利官方服务中心
  • 用Python蒙特卡洛模拟计算GOOG股票VaR风险值
  • DSH-16016-MFIF 控制器
  • 2026 抖店无货源软件盘点:ERP 采集工具收费免费合规推荐 - 抖大侠
  • C++ string全面指南:从basic_string设计到性能优化实战
  • 宝玑中国官方售后服务中心|服务热线及全部官方地址权威信息通知(2026年7月最新) - 亨得利钟表维修中心
  • 兄弟打印机驱动安装全攻略:USB与网络连接详解及故障排查
  • 上海地坪漆品牌排行:基于合规与性能的客观盘点 - 互联网科技品牌测评
  • 回调函数的应用
  • 2026 年更新:丹东口碑好的首饰回收店怎么联系,别再扔了!这批古董珠宝的惊人变现价值曝光 - 企业推荐管【认证】
  • FreeRtos的基础与应用
  • 面试官:什么是Zookeeper的选举机制?
  • 硬盘文件系统系列专题之二:NTFS的元数据王国与数据寻踪
  • 国内清水砼(仿清水混凝土)厂家实力排行及实测对比 - 互联网科技品牌测评
  • 《Java 100 天进阶之路》并发编程与JUC通关总结:从线程基础到并发容器,一套吃透Java高并发全链路(2026版)
  • 慧净电子HL-1+HL-2小车ATmega16A寄存器库学习AVR-GCC开源工具链VS Code学习记录(第一坑)
  • C++17实战:用std::optional与std::variant构建类型安全的JSON解析器
  • C语言实现Windows调试器与全局钩子:从原理到实战
  • Haply Inverse3 力反馈设备
  • AI赋能独立游戏开发:构建3D美术全流程敏捷生产管线
  • 常州武进区湖塘镇亨得利官方钟表服务中心电话公示(2026年7月最新) - 亨得利官方博客
  • 福建福州泉州厦门起名老师水平深度测评根据本地网友真实口碑排名 - 优企甄选
  • 《Java 100 天进阶之路》并发编程与JUC详解(第51~60篇)核心知识点汇总
  • 西峰黄金回收实测大盘点!塬区居民变现避坑,3 家持证门店全维度对比 - 福金阁黄金回收
  • 2026新手抖店无货源完整实操攻略!1688一件代发合规稳做,零囤货少踩坑 - 抖掌柜
  • MATROX Y7583-00 接口模块
  • 2026 抖店新手软件选型:官方工具与 ERP 性价比及免费付费对比 - 抖大侠