From 890dea096b1a63a21e3c2fee515aa6d2b9485b73 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 8 Mar 2026 00:37:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/nginx-api反向代理.conf | 3 ++- docs/nginx-宝塔站点示例.conf | 2 +- docs/宝塔部署说明.md | 12 ++++++------ run.sh | 18 ++++++++++++++++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/docs/nginx-api反向代理.conf b/docs/nginx-api反向代理.conf index 47f0ddb..27e98f9 100644 --- a/docs/nginx-api反向代理.conf +++ b/docs/nginx-api反向代理.conf @@ -1,8 +1,9 @@ # 将 /api 请求转发到本机 Node 后端(端口与 start-api.sh 一致,默认 5599) +# 注意:proxy_pass 末尾加 /,这样 /api/config 会转发为 /config(后端路由无 /api 前缀) # 把下面这段加入 server { ... } 内,建议放在 root 指令之后、其他 location 之前 location /api { - proxy_pass http://127.0.0.1:5599; + proxy_pass http://127.0.0.1:5599/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/docs/nginx-宝塔站点示例.conf b/docs/nginx-宝塔站点示例.conf index c69e77d..bc99728 100644 --- a/docs/nginx-宝塔站点示例.conf +++ b/docs/nginx-宝塔站点示例.conf @@ -15,7 +15,7 @@ server { } location /api { - proxy_pass http://127.0.0.1:5599; + proxy_pass http://127.0.0.1:5599/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/docs/宝塔部署说明.md b/docs/宝塔部署说明.md index 0f7fa38..c12e575 100644 --- a/docs/宝塔部署说明.md +++ b/docs/宝塔部署说明.md @@ -35,12 +35,12 @@ 2. 左侧选 **反向代理** → **添加反向代理**。 3. 填写: - **代理名称**:随意,如 `api` - - **目标 URL**:`http://127.0.0.1:5599` + - **目标 URL**:`http://127.0.0.1:5599/`(**末尾必须带 `/`**,这样 `/api/config` 会转成后端的 `/config`,因本后端路由无 `/api` 前缀) - **代理目录**:`/api`(表示只把 `/api` 开头的请求转给后端) - **发送域名**:默认 `$host` 即可 -4. 保存后,宝塔会自动改写 Nginx 配置并重载,无需手改配置文件。 +4. 保存后,若宝塔生成的 `proxy_pass` 没有末尾 `/`,请到 **设置 → 配置文件** 中把 `proxy_pass http://127.0.0.1:5599;` 改为 `proxy_pass http://127.0.0.1:5599/;`,再重载 Nginx。 -效果:访问 `http://你的域名/api/config` 时,Nginx 会转发到 `http://127.0.0.1:5599/api/config`。 +效果:访问 `http://你的域名/api/config` 时,Nginx 会转发到 `http://127.0.0.1:5599/config`,后端才能正确返回。 --- @@ -103,7 +103,7 @@ export API_BASE_URL="http://你的域名或IP:5599" 1. **前端**:浏览器访问 `http://你的域名`,应能打开全景页。 2. **API**: - - 同机执行:`curl -s http://127.0.0.1:5599/api/config`,应返回 JSON。 + - 同机执行:`curl -s http://127.0.0.1:5599/config`,应返回 JSON。 - 或访问:`http://你的域名/api/config`,应返回相同内容(说明反代生效)。 若 `/api/config` 报 502,多半是 5599 端口未启或未监听:用方式 A 再跑一次 `./run.sh`,或用方式 B 在宝塔 Node 项目中启动/重启。 @@ -123,7 +123,7 @@ location / { } location /api { - proxy_pass http://127.0.0.1:5599; + proxy_pass http://127.0.0.1:5599/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -141,7 +141,7 @@ location /api { | 步骤 | 说明 | |------|------| | 1. 网站根目录 | 指向 `项目根目录/dist` | -| 2. 反向代理 | 代理目录 `/api` → 目标 `http://127.0.0.1:5599` | +| 2. 反向代理 | 代理目录 `/api` → 目标 `http://127.0.0.1:5599/`(末尾带 `/`) | | 3. 后端保活 | 用 `./run.sh`(或 `USE_PM2=1 ./run.sh`),或用宝塔 Node 项目托管 `server/index.js` 端口 5599 | 按上述配置后,在宝塔中即可正常访问前端,且 `/api` 请求会由 Nginx 转发到本机 Node 服务并正常运行。 diff --git a/run.sh b/run.sh index c0a7bb3..73f97ed 100644 --- a/run.sh +++ b/run.sh @@ -1,9 +1,12 @@ #!/usr/bin/env bash -# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ → 后台启动后端 API(5599) +# 部署流程:拉代码 → 安装依赖 → 构建前端到 dist/ →(可选)同步到 Nginx root → 后台启动 API(5599) # 若 Nginx 未反代 /api,请先设置 API_BASE_URL 再执行,例如: # export API_BASE_URL="http://你的域名或IP:5599" # ./run.sh # 使用 pm2 保活(推荐):export USE_PM2=1 && ./run.sh +# 若项目在子目录、Nginx root 指向固定目录,构建后同步到该目录,例如: +# export DEPLOY_DIST=/www/wwwroot/view.airtep.com/dist +# ./run.sh set -e cd "$(dirname "$0")" @@ -21,6 +24,17 @@ fi node build.js +# 若设置了 DEPLOY_DIST(与 Nginx root 一致),将 dist/ 同步到该目录以便访问 +if [ -n "$DEPLOY_DIST" ]; then + mkdir -p "$DEPLOY_DIST" + if command -v rsync >/dev/null 2>&1; then + rsync -a --delete dist/ "$DEPLOY_DIST/" + else + (cd dist && find . -mindepth 1 -maxdepth 1 -exec cp -r {} "$DEPLOY_DIST/" \;) + fi + echo "[run.sh] 已同步 dist/ 到 $DEPLOY_DIST" +fi + # 后台启动 API:优先 pm2,否则 nohup if [ -n "$USE_PM2" ] && command -v pm2 >/dev/null 2>&1; then echo "[run.sh] 使用 pm2 启动 API(端口 ${API_PORT})..." @@ -38,4 +52,4 @@ else exec bash start-api.sh fi -echo "[run.sh] 部署完成。前端静态在 dist/,API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/api/config" \ No newline at end of file +echo "[run.sh] 部署完成。前端静态在 dist/,API 端口 ${API_PORT}。检查: curl -s http://127.0.0.1:${API_PORT}/config" \ No newline at end of file