{ auto_https off metrics } :80 { root * /usr/share/caddy log { output stdout format json } header { Cross-Origin-Embedder-Policy "require-corp" Cross-Origin-Opener-Policy "same-origin" } encode gzip zstd # Reverse Proxy: Plan-B leitet nur /api/mail an den Mail-Service weiter (kein API-Gateway nötig) handle /api/mail/* { reverse_proxy mail-service:8085 } handle /health { respond "healthy" 200 } # Korrekte MIME für .wasm sicherstellen (Caddy erkennt es i. d. R. automatisch; hier explizit) @wasm { path *.wasm } header @wasm Content-Type "application/wasm" # Caching-Strategie: Immutable Assets (hash-Dateien) lange cachen @immutable { path *.js *.css *.wasm *.png *.svg *.ico *.woff2 *.map } header @immutable Cache-Control "public, max-age=31536000, immutable" # Keine Cache-Header für SPA-Einstieg und Laufzeitkonfig @nocache { path /index.html /config.json } header @nocache Cache-Control "no-store" # Static file serving mit SPA-Fallback handle { try_files {path} /index.html file_server } }