docs(ops): 统一 md.tkmind.cn 域名与 105→103 反代拓扑

将管理后台公网域名从 gadm 更正为 md.tkmind.cn,补充 105 nginx 反代 103 的部署说明,
默认 VITE_BASE_PATH=/ 以支持 /analytics/seo-geo 根路径访问。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-08-10 17:38:31 +08:00
parent 6a7d6cec70
commit 0da7f04878
13 changed files with 98 additions and 73 deletions
+3 -3
View File
@@ -33,6 +33,6 @@ scripts/local_restart.sh
scripts/pro_restart.sh
scripts/rsync_to_server.sh
scripts/audit-103-state.sh
scripts/gadm-nginx-105.conf
scripts/gadm-nginx.conf.example
scripts/gadm-lb.Caddyfile
scripts/md-nginx-105.conf
scripts/md-nginx.conf.example
scripts/md-lb.Caddyfile
-11
View File
@@ -1,11 +0,0 @@
# gadm.tkmind.cn → memind_admvite preview :5174 + Admin API :8085
# 生产 nginx 需把 /ops/ 反代到 5174,勿再指向 Memind/ops dev server
:8091 {
reverse_proxy 127.0.0.1:5174 {
flush_interval -1
transport http {
read_timeout 0
write_timeout 0
}
}
}
+12
View File
@@ -0,0 +1,12 @@
# md.tkmind.cn → memind_admvite preview :5174 + Admin API :8085
# 生产 nginx 需把 / 反代到 5174/auth /admin-api /api 反代到 8085
:8091 {
reverse_proxy 127.0.0.1:5174 {
flush_interval -1
transport http {
read_timeout 0
write_timeout 0
}
}
}
@@ -1,10 +1,13 @@
# gadm.tkmind.cn @ 105 nginx → Studio LAN 10.10.0.2fallback 58.38.22.103
# memind_adm: preview :5174, Admin API :8085(根路径部署,/ 直达后台)
# md.tkmind.cn @ 105 nginx → Studio 10358.38.22.103
# memind_adm 进程在 103;105 仅做 HTTPS 入口与反代,不跑 adm 应用。
# preview :5174 / Admin API :8085
#
# 内网可达时 upstream 可改为 10.10.0.2105 当前活动配置使用公网 IP 58.38.22.103。
server {
listen 80;
listen [::]:80;
server_name gadm.tkmind.cn;
server_name md.tkmind.cn;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
@@ -18,9 +21,9 @@ server {
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gadm.tkmind.cn;
ssl_certificate /etc/letsencrypt/live/gadm.tkmind.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gadm.tkmind.cn/privkey.pem;
server_name md.tkmind.cn;
ssl_certificate /etc/letsencrypt/live/md.tkmind.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/md.tkmind.cn/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
@@ -28,8 +31,13 @@ server {
return 301 /;
}
# 旧 VITE_BASE_PATH=/ops 下的 admin 深链 → 根路径
location = /ops/analytics/seo-geo {
return 301 /analytics/seo-geo;
}
location /auth {
proxy_pass http://10.10.0.2:8085;
proxy_pass http://58.38.22.103:8085;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
@@ -42,7 +50,7 @@ server {
}
location /admin-api {
proxy_pass http://10.10.0.2:8085;
proxy_pass http://58.38.22.103:8085;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
@@ -55,7 +63,7 @@ server {
}
location /api {
proxy_pass http://10.10.0.2:8085;
proxy_pass http://58.38.22.103:8085;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
@@ -68,7 +76,7 @@ server {
}
location / {
proxy_pass http://10.10.0.2:5174;
proxy_pass http://58.38.22.103:5174;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
@@ -1,21 +1,18 @@
# gadm.tkmind.cn — memind_adm 独立管理端(替换原 Memind /ops Vite dev
# md.tkmind.cn — memind_adm 独立管理端(替换原 Memind /ops Vite dev
#
# 前置:100 服务器 remote_restart.sh 已启动
# 前置:103 服务器 remote_restart.sh 已启动
# Admin API: 127.0.0.1:8085
# vite preview: 127.0.0.1:5174静态资源 base=/ops/
# vite preview: 127.0.0.1:5174根路径 base=/
#
# 前端 fetch 使用根路径 /auth、/admin-api、/api(非 /ops/auth),nginx 需单独反代到 Admin API。
# 前端 fetch 使用根路径 /auth、/admin-api、/apinginx 需单独反代到 Admin API。
# Analytics / SEO·GEO 看板:https://md.tkmind.cn/analytics/seo-geo
server {
listen 443 ssl http2;
server_name gadm.tkmind.cn;
server_name md.tkmind.cn;
# ssl_certificate ...;
location = / {
return 302 /ops/admin/;
}
location /auth {
proxy_pass http://127.0.0.1:8085;
proxy_http_version 1.1;
@@ -43,7 +40,7 @@ server {
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ops/ {
location / {
proxy_pass http://127.0.0.1:5174;
proxy_http_version 1.1;
proxy_set_header Host $host;
+2 -2
View File
@@ -11,7 +11,7 @@ RELEASES_DIR="${REMOTE_ROOT}/releases"
BACKUP_DIR="${REMOTE_ROOT}/backups/memind_adm"
ARCHIVE_DIR="${REMOTE_ROOT}/archives"
IGNORE_FILE="${ROOT}/scripts/.releaseignore-prod"
WEB_HEALTH_URL="${STUDIO_WEB_HEALTH_URL:-http://127.0.0.1:5174/ops/}"
WEB_HEALTH_URL="${STUDIO_WEB_HEALTH_URL:-http://127.0.0.1:5174/}"
API_HEALTH_URL="${STUDIO_API_HEALTH_URL:-http://127.0.0.1:8085/health}"
RELEASE_TS="$(date +%Y%m%d-%H%M%S)"
SHORT_SHA="$(git -C "${ROOT}" rev-parse --short HEAD 2>/dev/null || echo no-git)"
@@ -119,7 +119,7 @@ if [[ "${SKIP_BUILD}" -ne 1 ]]; then
say "本地构建 dist103 不再执行前端构建)"
(
cd "${ROOT}"
VITE_BASE_PATH="${VITE_BASE_PATH:-/ops}" npm run build
VITE_BASE_PATH="${VITE_BASE_PATH:-/}" npm run build
)
fi
+1 -1
View File
@@ -23,7 +23,7 @@ if [[ -f "${ROOT}/.env" ]]; then
set +a
fi
BASE_PATH="${VITE_BASE_PATH:-/ops}"
BASE_PATH="${VITE_BASE_PATH:-/}"
if [[ "${BASE_PATH}" != */ ]]; then
BASE_PATH="${BASE_PATH}/"
fi
+2 -2
View File
@@ -3,7 +3,7 @@ import { defineConfig, loadEnv } from 'vite';
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '');
const backend = env.ADM_DEV_BACKEND ?? 'http://127.0.0.1:8085';
const basePath = env.VITE_BASE_PATH?.trim() || '/ops';
const basePath = env.VITE_BASE_PATH?.trim() || '/';
const base = basePath.endsWith('/') ? basePath : `${basePath}/`;
return {
@@ -12,7 +12,7 @@ export default defineConfig(({ mode }) => {
host: env.ADM_WEB_HOST ?? env.ADM_API_HOST ?? '127.0.0.1',
port: Number(env.ADM_PORT ?? 5174),
strictPort: true,
allowedHosts: ['gadm.tkmind.cn', 'localhost', '127.0.0.1', '10.10.0.2', '58.38.22.103'],
allowedHosts: ['md.tkmind.cn', 'gadm.tkmind.cn', 'localhost', '127.0.0.1', '10.10.0.2', '58.38.22.103'],
proxy: {
'/api': backend,
'/auth': backend,