mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 18:01:09 +02:00
feat(cloudflared): split auth.mana.how — /api/* → mana-auth, rest → mana-auth-web
Auth portal is now live: API calls (Better Auth endpoints) still hit mana-auth (:3001) directly; all UI routes (login, register, reset, verify-email) are served by the new mana-auth-web SvelteKit app on host port 3042. Also updates the duplicate-hostname validator to allow path-based split routing rules for the same hostname. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
bf8353ea8a
commit
d3d9271426
2 changed files with 17 additions and 6 deletions
|
|
@ -125,10 +125,17 @@ ingress:
|
||||||
service: http://localhost:5000
|
service: http://localhost:5000
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# Auth Service (Hono/Bun)
|
# Auth (Split: Portal-UI :3042, API :3001)
|
||||||
# ============================================
|
# ============================================
|
||||||
|
# /api/* geht direkt an mana-auth (Hono/Bun, JWT-Ausstellung, Better Auth).
|
||||||
|
# Alles andere (Login, Register, Reset, Verify-Email) → mana-auth-web (SvelteKit).
|
||||||
|
# mana-auth-web läuft auf Host-Port 3042 (3002 belegt durch legacy mana-credits).
|
||||||
|
# Reihenfolge zählt: spezifischere Pfad-Regeln zuerst.
|
||||||
- hostname: auth.mana.how
|
- hostname: auth.mana.how
|
||||||
|
path: /api/.*
|
||||||
service: http://localhost:3001
|
service: http://localhost:3001
|
||||||
|
- hostname: auth.mana.how
|
||||||
|
service: http://localhost:3042
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# Unified Backend API (Hono/Bun, port 3060)
|
# Unified Backend API (Hono/Bun, port 3060)
|
||||||
|
|
|
||||||
|
|
@ -131,11 +131,15 @@ if (!Array.isArray(ingress)) {
|
||||||
err(
|
err(
|
||||||
`${where}: hostname "${r.hostname}" looks invalid (lowercase, dot-separated, no spaces)`
|
`${where}: hostname "${r.hostname}" looks invalid (lowercase, dot-separated, no spaces)`
|
||||||
);
|
);
|
||||||
} else if (seen.has(r.hostname)) {
|
} else if (seen.has(r.hostname) && !r.path) {
|
||||||
err(
|
// Duplicate hostnames are allowed when the earlier rule uses a `path:`
|
||||||
`${where}: duplicate hostname "${r.hostname}" (also at ingress[${seen.get(r.hostname)}])`
|
// matcher (path-based split routing, e.g. /api/* → backend, rest → UI).
|
||||||
);
|
// Only flag true duplicates: same hostname, neither rule has a path.
|
||||||
} else {
|
const prevIdx = seen.get(r.hostname);
|
||||||
|
if (!ingress[prevIdx].path) {
|
||||||
|
err(`${where}: duplicate hostname "${r.hostname}" (also at ingress[${prevIdx}])`);
|
||||||
|
}
|
||||||
|
} else if (!seen.has(r.hostname)) {
|
||||||
seen.set(r.hostname, i);
|
seen.set(r.hostname, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue