Nginx配置

若依(前后端分离版)的标准架构是:
静态资源(html, css, js):由 Nginx 直接从 /var/www/ruoyi 读取并返回给浏览器。
接口请求(/prod-api/...):由 Nginx 反向代理转发给后端的 8080 端口。

请使用以下配置替换你现有的配置:

server {
listen 80;
server_name _;

1. 设置前端静态文件根目录

root /var/www/ruoyi;
index index.html;

2. 处理前端页面请求 (核心修改)

location / {
# 尝试查找真实文件,找不到则返回 index.html (支持 Vue 刷新不404)
try_files uri uri/ /index.html;

【注意】这里不要写 proxy_pass!否则又变回直接访问后端了

}

3. 处理后端接口请求 (反向代理)

若依默认的前端请求前缀是 /prod-api,请根据你的前端配置文件(.env.production)确认

location /prod-api/ {
proxy_set_header Host http_host;
proxy_set_header X-Real-IP remote_addr;
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto scheme;

转发到后端 8080 端口

注意:末尾的 / 很重要,它会去掉 /prod-api/ 前缀再传给后端

proxy_pass http://127.0.0.1:8080/;
}

可选:禁止访问隐藏文件

location ~ /. {
deny all;
}
}

🚀 操作步骤

编辑配置文件:
sudo nano /etc/nginx/sites-available/ruoyi
# 或者你的配置文件路径,例如 /etc/nginx/conf.d/ruoyi.conf

将内容替换为上面的代码。

检查配置语法:
sudo nginx -t

必须显示 syntax is ok 和 test is successful。

重载 Nginx:
sudo systemctl reload nginx

再次访问:
在浏览器访问 http://你的服务器IP
现在应该能看到若依的登录界面(因为 Nginx 直接提供了 index.html)。
尝试输入账号密码登录。如果配置正确,登录请求(/prod-api/login)会被 Nginx 转发给后端,从而成功登录。

💡 关键点解释
root /var/www/ruoyi;: 告诉 Nginx 去这个文件夹找 index.html。
try_files ...: 这是 Vue/React 单页应用必须的,防止刷新页面变白。
location /prod-api/: 只有以 /prod-api/ 开头的请求(即登录、获取数据等接口)才会被转发给 8080 端口。其他请求(如加载 .js, .css, 图片)都由 Nginx 自己处理。
proxy_pass ... /;: 注意末尾的斜杠。它会将 http://你的IP/prod-api/system/login 转换为 http://127.0.0.1:8080/system/login 传给后端,符合若依后端的接口路径要求。

posted @ 2026-03-25 16:51  lizhigang  阅读(73)  评论(0)    收藏  举报