fix: manager tenant root path redirects to /admin, no NC drive route

Manager tenant has no NC container. Root path now redirects to /admin/
instead of pointing to nc-vmis:80 (Bad Gateway). Route structure:
- / → redirect to /admin/
- /admin/* → vmis-backend (StripPrefix)
- /api/* → vmis-backend

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
VMIS Developer
2026-03-15 21:52:40 +08:00
parent a3d5dd2e67
commit 3ee7f72f52

View File

@@ -200,18 +200,22 @@ def _generate_tenant_route_yaml(tenant, is_active: bool) -> str:
lines = ["http:"]
if tenant.is_manager:
# Manager 租戶:根路徑 redirect 到 /admin/admin 和 /api 指向 vmis-backend
lines += [
" middlewares:",
" vmis-strip-admin:",
" stripPrefix:",
' prefixes: ["/admin"]',
"",
" vmis-redirect-admin:",
" redirectRegex:",
f' regex: "^https://{domain}/?$"',
f' replacement: "https://{domain}/admin/"',
" permanent: false",
"",
]
lines += [" routers:"]
if tenant.is_manager:
lines += [
" routers:",
f" {code}-admin:",
f' rule: "Host(`{domain}`) && PathPrefix(`/admin`)"',
f" service: {code}-vmis",
@@ -229,9 +233,30 @@ def _generate_tenant_route_yaml(tenant, is_active: bool) -> str:
" certResolver: letsencrypt",
" priority: 200",
"",
f" {code}-root:",
f' rule: "Host(`{domain}`)"',
f" service: {code}-vmis",
" entryPoints: [websecure]",
" middlewares: [vmis-redirect-admin]",
" tls:",
" certResolver: letsencrypt",
" priority: 100",
"",
f" {code}-http:",
f' rule: "Host(`{domain}`)"',
" entryPoints: [web]",
" middlewares: [redirect-https]",
f" service: {code}-vmis",
"",
" services:",
f" {code}-vmis:",
" loadBalancer:",
" servers:",
' - url: "http://vmis-backend:10281"',
]
else:
lines += [
" routers:",
f" {code}-drive:",
f' rule: "Host(`{domain}`)"',
f" service: {code}-drive",
@@ -252,14 +277,6 @@ def _generate_tenant_route_yaml(tenant, is_active: bool) -> str:
f' - url: "{nc_url}"',
]
if tenant.is_manager:
lines += [
f" {code}-vmis:",
" loadBalancer:",
" servers:",
' - url: "http://vmis-backend:10281"',
]
return "\n".join(lines) + "\n"