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