From e238b41fecc3f164f24efe3bc6738028d63d3db8 Mon Sep 17 00:00:00 2001 From: Dodo Date: Sat, 13 Jun 2026 11:13:47 +0700 Subject: [PATCH] Fix Caddy routing: split API paths to backend, avoid /auth/login route collision POST /auth/login was returning 405 because Next.js's filesystem page route at /auth/login (the login UI) shadows the afterFiles rewrite to the backend for every method, including POST. Route API paths (and non-GET/HEAD /auth/* requests) directly to the backend container at the Caddy layer instead, leaving GET/HEAD /auth/login to render the frontend login page. --- Caddyfile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Caddyfile b/Caddyfile index d9e9356..e0e3485 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,3 +1,19 @@ {$DOMAIN} { + # Backend API paths with no corresponding frontend pages. + @api { + path /households /households/* /poi /poi/* /land /land/* /gas-station /gas-station/* /health + } + reverse_proxy @api backend:4000 + + # /auth/* -> backend, except GET/HEAD /auth/login which is the frontend login page. + @authBackend { + path /auth/* + not { + path /auth/login + method GET HEAD + } + } + reverse_proxy @authBackend backend:4000 + reverse_proxy frontend:3000 }