前后端分离项目的同域部署指南
项目背景
-
后端:ThinkPHP 6.0+
-
前端:Vue 3
-
部署环境:宝塔面板
在网上看了好多文章发现都不适合自己,对于新手小白来说他们都讲的不清楚,所以自己记录一下如何部署前后端分离的项目如何同域部署。
简单介绍一下我的前后端项目情况 后端使用的是ThinkPHP 6.0+框架 前端使用的是Vue3 我是用的宝塔部署我的服务,接下来从零开始部署我的服务
一.后端部署
我们先部署后端,把后端部署好再来部署前端,这样就能一步一步排除问题。
2.选择自己的php版本 3.将自己的后端代码上传到网站目录中,然后运行目录选择public
4.配置thinkphp的伪静态,这里插个题外话,因为我刚开始做后端,所以对宝塔里面的这两个按钮很疑惑,到底是在伪静态里面写重写规则,还是在配置文件中配置呢,这个问题一度让我难受了很久,网上搜了也是一知半解,后面通过咨询大佬才知道这两个的区别,那么我们来详细了解下:
二. Nginx 配置说明
在配置 Nginx 之前,需要理解宝塔面板中"伪静态"和"配置文件"的区别:
伪静态按钮方式
-
✅ 更简单直观,适合新手使用
-
✅ 提供常用框架预设规则
-
✅ 修改后自动重载配置
-
📝 实际修改 rewrite/网站名/*.conf
配置文件方式
-
✅ 直接修改 Nginx 配置文件,更灵活
-
✅ 可以配置更复杂的规则
-
⚠️ 需要手动重启 Nginx
-
⚠️ 修改有风险,需谨慎
加载顺序:
server { # ... 其他配置 ...
# 伪静态按钮添加的规则(后加载)
include rewrite/gm.jxgzsfybjy.cn/*.conf;
# 直接在配置文件中的规则(先加载)
location / {
try_files $uri $uri/ /index.html;
}
}
三.ThinkPHP 路由配置
我们直接在配置文件中添加thinkphp的伪静态。这里需要注意一下,如果使用/api前缀,那么你后端代码的路由上必须使用api前缀,才能够对应上,不让访问会404,我之前就卡在这里好久。
location /api {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
四.前端部署
配置完后端后浏览器或者postman上访问api看看有没有问题,没问题就来部署前端,首先前端项目npm run build打包文件生成一个dist文件夹,把dist文件夹复制放到后端代码的public目录下。
五.前端静态文件配置
然后在配置文件中加入规则,加入规则后重启nginx,然后访问你的地址就行了。终于完成了前后端项目分离的部署工作,是不是很简单?
# 前端静态文件配置
location / {
root f:/wwwroot/gm.jxgzsfybjy.cn/public/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
完整配置参考
注意别乱复制哦,里面的域名根据你自己的来
server {
listen 6213;
server_name your_domain;
index index.php index.html index.htm default.php default.htm default.html;
root f:/wwwroot/your_domain/public;
# API 路由配置
location /api {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
# 前端静态文件配置
location / {
root f:/wwwroot/your_domain/public/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# PHP 配置
include php/82.conf;
# 其他标准配置
include rewrite/your_domain/*.conf;
include proxy/your_domain/*.conf;
include redirect/your_domain/*.conf;
# 日志配置
access_log F:/BtSoft/wwwlogs/your_domain.log;
error_log F:/BtSoft/wwwlogs/your_domain.error.log;
}
部署检查清单
-
后端 API 能否正常访问(使用 Postman 或浏览器测试)
-
前端页面是否正常加载
-
路由跳转是否正常
-
API 请求是否成功
常见问题
-
404 错误:检查 API 前缀是否匹配
-
跨域问题:确认 Nginx 配置是否正确
-
路由问题:检查 try_files 配置
通过以上步骤,你就可以完成前后端分离项目的同域部署了。如果遇到问题,建议按照检查清单逐步排查。