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:
-
Snippets: Återanvändbara konfigurationer som kan importeras.
(auth): Konfigurerar basautentisering.(common): Lägger till säkerhetsrubriker och komprimeringsinställningar.
-
Domänspecifika Regler: Varje domän har sina egna regler för hur trafiken ska hanteras.
Snippets
(auth)
- Använder
basicauthfö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 tillrecipe-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 tillrecipe-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 viabasicauth.
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.sedirigeras tillrecipe-flutter:5000dä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 caddyfö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 meddocker-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.