fix(distribution): 修正分销后台入口地址并收口主站后台隐藏路径

- 新增前端 distributionAdmin 工具:优先 VITE_DISTRIBUTION_ADMIN_URL,
  本地开发回退 5190,生产按 distribution.<主站域名> 推导
- 替换主站后台「打开独立分销后台」按钮与开通凭证中硬编码的 :5190
- 分销后台复制凭证改用 window.location.origin,去掉硬编码 http
- Caddyfile 中 /manage-7x9k2p 仅主站域名放行,分站域名统一 404
- 构建/部署链路透传 VITE_DISTRIBUTION_ADMIN_URL 与 ADMIN_BASE_PATH
This commit is contained in:
yml2213
2026-09-16 15:09:38 +08:00
parent 6d31da1874
commit 64a4e5bb16
10 changed files with 129 additions and 14 deletions
+15
View File
@@ -63,6 +63,13 @@
import public_api
# 主站后台隐藏入口:storefront 片段同时服务主站和所有分销站点域名,
# 这里统一 404,仅主站域名在下方主站 block 用 @main_admin 放行。
@platform_admin path {$ADMIN_BASE_PATH:/manage-7x9k2p} {$ADMIN_BASE_PATH:/manage-7x9k2p}/*
handle @platform_admin {
respond 404
}
# 生产后台页面使用构建时配置的隐藏入口,旧 /admin 入口直接返回 404。
@legacy_admin path /admin /admin/*
handle @legacy_admin {
@@ -80,6 +87,14 @@
# 主站与过渡子域名共享同一套配置:域名迁移期间新旧域名同时可访问,
# 避免 DNS 缓存未生效导致部分用户打不开。迁移完成后可移除 h5.{$CADDY_DOMAIN}。
{$CADDY_DOMAIN}, h5.{$CADDY_DOMAIN} {
# 主站后台隐藏入口只在本域名提供静态资源;分销站点域名由 storefront 片段统一 404。
@main_admin path {$ADMIN_BASE_PATH:/manage-7x9k2p} {$ADMIN_BASE_PATH:/manage-7x9k2p}/*
handle @main_admin {
root * /srv/dist
try_files {path} /index.html
file_server
}
import storefront
}
+4
View File
@@ -5,6 +5,10 @@ FROM node:24-alpine AS build
ARG VITE_ADMIN_BASE_PATH=/manage-7x9k2p
ENV VITE_ADMIN_BASE_PATH=${VITE_ADMIN_BASE_PATH}
# 主站后台里「打开独立分销后台」按钮与开通凭证使用的分销后台地址。
# 留空时前端按 distribution.<当前主站域名> 推导,显式配置可覆盖(如独立后台子域改名)。
ARG VITE_DISTRIBUTION_ADMIN_URL=
ENV VITE_DISTRIBUTION_ADMIN_URL=${VITE_DISTRIBUTION_ADMIN_URL}
WORKDIR /src
COPY frontend/package*.json ./
+4
View File
@@ -5,11 +5,15 @@ services:
dockerfile: deploy/caddy/Dockerfile
args:
VITE_ADMIN_BASE_PATH: ${VITE_ADMIN_BASE_PATH:-/manage-7x9k2p}
# 留空时前端按 distribution.<CADDY_DOMAIN> 推导,与 Caddyfile 的站点规则保持一致。
VITE_DISTRIBUTION_ADMIN_URL: ${VITE_DISTRIBUTION_ADMIN_URL:-}
restart: unless-stopped
environment:
TZ: Asia/Shanghai
CADDY_DOMAIN: ${CADDY_DOMAIN:?请先导出 CADDY_DOMAIN,或使用 scripts/deploy-prod.sh 部署}
CADDY_EMAIL: ${CADDY_EMAIL:?请先导出 CADDY_EMAIL,或使用 scripts/deploy-prod.sh 部署}
# Caddyfile 用它放行主站后台隐藏入口,并与前端构建期的 VITE_ADMIN_BASE_PATH 保持一致。
ADMIN_BASE_PATH: ${VITE_ADMIN_BASE_PATH:-/manage-7x9k2p}
# 选号网域名可选;未配置时 conf.d 为空,不影响主站
CADDY_SHOW_DOMAIN: ${CADDY_SHOW_DOMAIN:-}
ports: