From 55004954435e787765d9ceeca78130958d9a9167 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 16:30:28 +0000 Subject: [PATCH] fix(nginx): /api liefert ohne Dienst 503 mit JSON statt der App MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fällt aircard-api aus, verschwindet sein Traefik-Router und /api/* fiel auf index.html (200 text/html) zurück. Jetzt 503 mit {"error":"Der Dienst ist gerade nicht erreichbar."} und Content-Type application/json. Co-Authored-By: Claude Sonnet 5.5 --- deploy/nginx/aircard-ios.org.conf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/deploy/nginx/aircard-ios.org.conf b/deploy/nginx/aircard-ios.org.conf index 6526f47..515b076 100644 --- a/deploy/nginx/aircard-ios.org.conf +++ b/deploy/nginx/aircard-ios.org.conf @@ -49,6 +49,15 @@ server { return 404; } + # Die Community-API (aircard-api) liegt ebenfalls nur über Traefik auf /api. Fehlt der Dienst (Container weg, damit + # auch sein Traefik-Router), darf /api/* nie die App ausliefern: der Client bekäme HTML mit 200 statt eines Fehlers. + # Stattdessen 503 mit JSON-Text, den die Seite wie eine API-Antwort anzeigt. Gleiche Reihenfolge-Regel wie bei /v1. + # (Kein add_header: sonst entfallen die Sicherheits-Header des server-Blocks; default_type setzt den Content-Type.) + location ~ ^/api(/|$) { + default_type application/json; + return 503 '{"error":"Der Dienst ist gerade nicht erreichbar."}'; + } + location = /index.html { expires -1; }