Files
caddy-bunny/teknisk_beskrivning_caddy.md
T

3.5 KiB

Teknisk Beskrivning av Caddy Reverse Proxy

Översikt

Caddy används som en reverse proxy för att hantera trafik till olika interna tjänster. Denna konfiguration är optimerad för att köra i en Docker-miljö och inkluderar säkerhetsåtgärder för att skydda mot vanliga webbsårbarheter.

Konfiguration

Grundläggande Struktur

Caddyfilen är uppdelad i två huvudsektioner:

  1. Snippets: Återanvändbara konfigurationer som kan importeras.

    • (auth): Konfigurerar basautentisering.
    • (common): Lägger till säkerhetsrubriker och komprimeringsinställningar.
  2. Domänspecifika Regler: Varje domän har sina egna regler för hur trafiken ska hanteras.

Snippets

(auth)

  • Använder basicauth för att kräva autentisering.
  • Användarnamn och lösenord är krypterade med bcrypt.

(common)

  • encode gzip zstd: Aktiverar komprimering för att förbättra prestanda.
  • Säkerhetsrubriker:
    • Strict-Transport-Security: Tvingar HTTPS och inkluderar subdomäner.
    • X-Content-Type-Options: Förhindrar MIME-sniffing.
    • X-Frame-Options: Förhindrar klickkapning.
    • X-XSS-Protection: Aktiverar XSS-skydd.
    • Referrer-Policy: Kontrollerar hur referrer-information skickas.
    • Permissions-Policy: Begränsar tillgång till känsliga API:er.
    • Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy, Cross-Origin-Embedder-Policy: Förbättrar säkerheten för cross-origin-resurser.

Domänspecifika Regler

Varje domän har en eller flera reverse_proxy-regler som dirigerar trafik till rätt tjänst. Vissa domäner, som recept.gynther.se, har mer komplexa regler för att hantera flera tjänster.

Exempel: recept.gynther.se

  • Import Service: Hanterar /api/recipes/import* och dirigerar till recipe-import-service:3000.
  • Frontend Proxy: Hanterar specifika API-endpoints och dirigerar till recipe-frontend:3000.
  • Backend API: Hanterar /api/products*, /api/inventory*, och /api/recipes* och dirigerar till recipe-api:8080.
  • Catch All: All annan trafik dirigeras till recipe-frontend:3000.

Säkerhet

Autentisering

  • Vissa tjänster, som wetty.gynther.se, kräver autentisering via basicauth.

Säkerhetsrubriker

  • Caddy lägger till flera säkerhetsrubriker för att skydda mot vanliga webbsårbarheter.

Docker och Nätverk

  • Caddy körs i en Docker-installation och kommunicerar med andra containrar via Docker-nätverket.
  • Trafik mellan containrar är intern och påverkas inte av brandväggsregler på värdservern.
  • Flutter har en egen Caddy-installation i sin Docker-container för att hantera specifika behov, vilket innebär att test.gynther.se dirigeras till recipe-flutter:5000 där den egna Caddy-installationen körs.

Brandvägg (UFW)

För att säkerställa att endast önskad trafik når servern:

  • Tillåt port 22 (SSH).
  • Tillåt port 80 (HTTP) och 443 (HTTPS) för webbtrafik.

Felsökning

  • Loggar: Använd docker-compose logs caddy för att se Caddy-loggar.
  • Testa Konnektivitet: Se till att alla tjänster som Caddy ska dirigera trafik till är igång och lyssnar på rätt portar.
  • Uppdatera Konfiguration: Om ändringar görs i Caddyfile, starta om Caddy-containern med docker-compose restart caddy.

Slutsats

Denna konfiguration ger en säker och effektiv lösning för att hantera trafik till flera tjänster med Caddy som reverse proxy. Genom att använda Docker och Caddy kan du enkelt skalera och hantera dina tjänster.