在宝塔面板中,一个域名绑定两个不同的项目(例如前端和后端),可以通过以下几种方式实现。以下是常见的几种方法及详细配置步骤:
✅ 方法一:使用子路径反向X_X(推荐)
如果你希望一个域名下,比如 example.com,访问 example.com/api/ 走后端项目,而其他路径走前端项目,可以使用 反向X_X。
📌 步骤如下:
-
创建第一个网站项目(如前端)
- 进入宝塔面板 → 网站 → 添加站点
- 域名填写
example.com - 根目录设置为你的前端项目路径(如
/www/wwwroot/example_frontend) - 其他根据需要配置 PHP/伪静态等
-
进入该网站的【配置】页面
- 找到“配置文件”或“反向X_X”选项卡
- 点击【添加反向X_X】
- 名称:可填
api_proxy - 请求路径:
/api/ - 目标 URL:填写你要X_X到的后端地址(如
http://127.0.0.1:8080) - 发送域名:留空或填后端服务期望的 Host
- 开启“保留URI路径”
- 名称:可填
-
测试访问
- 访问
example.com会加载前端项目 - 访问
example.com/api/xxx会被X_X到后端服务
- 访问
✅ 方法二:使用多个网站 + 同一个域名的不同子路径(通过 Nginx 配置)
如果你有两个完全独立的项目(比如前端和后端分别部署在不同端口),可以通过手动修改 Nginx 配置来实现。
📌 步骤如下:
-
创建两个网站
- 第一个网站:
- 域名:
example.com - 端口:80 或 443
- 根目录指向前端项目
- 域名:
- 第二个网站:
- 域名也写
example.com - 修改监听端口(比如 8080),作为后端项目运行的端口
- 根目录指向后端项目(也可以用 Node.js、Java 等服务)
- 域名也写
- 第一个网站:
-
修改第一个网站的 Nginx 配置
- 在配置文件中加入如下代码(匹配
/api/的请求转发到第二个网站):
- 在配置文件中加入如下代码(匹配
location /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;
}
- 保存并重启 Nginx
✅ 方法三:使用二级域名(最简单)
如果你不介意使用子域名,这是最清晰的方式。
- 前端:
www.example.com - 后端:
api.example.com
📌 步骤如下:
-
添加两个网站
- 一个绑定
www.example.com,放前端项目 - 一个绑定
api.example.com,放后端项目
- 一个绑定
-
DNS 解析也要加上这两个域名解析到服务器 IP
这种方式结构清晰,适合大多数项目。
🔁 补充说明
| 方式 | 是否支持同域名 | 是否推荐 | 备注 |
|---|---|---|---|
| 子路径反向X_X | ✅ 是 | ✅ 推荐 | 使用 /api/ 等路径分发请求 |
| 多网站+Nginx配置 | ✅ 是 | ⚠️ 中级 | 需要手动配置 Nginx |
| 二级域名 | ❌ 否 | ✅ 推荐 | 更清晰、易维护 |
🧪 示例场景
你有一个 Vue 前端项目运行在 80 端口,还有一个 Spring Boot 后端运行在 8080 端口,你想让访问 /api/** 走后端接口,其余走前端。
只需在前端网站的 Nginx 配置中添加如下内容即可:
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
如需我帮你写具体的 Nginx 配置,欢迎提供你的项目信息(比如前后端端口、是否带 HTTPS、是否需要跨域处理等)!
需要图文教程或者视频演示吗?我可以继续为你准备。
CLOUD技术博