Kennisbank › Moderne Proxies › Caddy als webserver en reverse proxy: installatie, configuratie en gebruik
moderne proxies starter 27 August 2026

Caddy als webserver en reverse proxy: installatie, configuratie en gebruik

Caddy als webserver en reverse proxy: installatie, configuratie en gebruik

Caddy als webserver en reverse proxy: installatie, configuratie en gebruik

Dit artikel legt uit wat Caddy is, hoe u het installeert en configureert voor statische bestanden en reverse proxy, inclusief integratie met Authelia. Het is bedoeld voor ontwikkelaars en systeembeheerders die een moderne webserver met automatische HTTPS willen opzetten.

Vereisten

- Een Linux-server (Debian, Ubuntu, Fedora of CentOS) met root-toegang of sudo-rechten - Een domeinnaam die naar het IP-adres van de server wijst (voor HTTPS via Let's Encrypt) - Basiskennis van de commandoregel - Caddy versie 2.7 of nieuwer (versie 2.8 bevat verbeterde HTTP/3-ondersteuning)

Wat is Caddy?

Caddy is een open-source webserver geschreven in Go. Het onderscheidt zich door automatische HTTPS: Caddy vraagt en vernieuwt TLS-certificaten zelf via Let's Encrypt, zonder handmatige configuratie. Dit werkt out-of-the-box voor zowel eenvoudige bestandsservers als complexe reverse proxy-opstellingen.

Caddy ondersteunt HTTP/2 en HTTP/3. HTTP/3 draait op het QUIC-protocol en presteert beter bij onstabiele netwerkverbindingen. Deze protocollen zijn standaard ingeschakeld en vereisen geen extra configuratie.

Stappen

1. Installeer Caddy via het systeempakketbeheer

Caddy biedt officiële pakketten voor de belangrijkste Linux-distributies. Voor Debian/Ubuntu:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Voor Fedora/RHEL:

sudo dnf install 'dnf-command(copr)'
sudo dnf copr enable @caddy/caddy
sudo dnf install caddy

2. Start Caddy als systeemservice

Caddy draait als service en start automatisch bij het opstarten van het systeem:

sudo systemctl enable --now caddy

Controleer of de service draait:

sudo systemctl status caddy

3. Configureer een eenvoudige bestandsserver met de Caddyfile

De Caddyfile is het configuratiebestand van Caddy. Het gebruikt een leesbare syntax voor routes, proxy-instellingen en certificaten. Maak een basisconfiguratie voor een statische bestandsserver:

sudo nano /etc/caddy/Caddyfile

Vervang de inhoud door:

example.com {
    root * /var/www/html
    file_server browse
}

Vervang `example.com` door uw eigen domeinnaam. De `file_server browse`-directive maakt een browsbare interface die de inhoud van de directory toont. Dit is handig voor tijdelijke bestandsdeling of ontwikkelomgevingen.

4. Configureer Caddy als reverse proxy

Caddy kan verkeer doorsturen naar andere services op basis van URL-paden of hostnamen. Dit is nuttig wanneer meerdere applicaties op één server draaien. Voeg een reverse proxy-regel toe aan de Caddyfile:

app.example.com {
    reverse_proxy localhost:8080
}

Dit stuurt al het verkeer voor `app.example.com` door naar de service op poort 8080. Voor path-based routing:

example.com {
    handle /api/* {
        reverse_proxy localhost:3000
    }
    handle {
        root * /var/www/html
        file_server
    }
}

5. Bouw Caddy met plugins via xcaddy

Voor uitbreidingen zoals specifieke DNS-providers bij certificaatvernieuwing gebruikt u xcaddy. Dit hulpmiddel compileert Caddy vanuit de broncode met een gekozen set modules:

sudo apt install golang-go
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

Bouw Caddy met een DNS-plugin, bijvoorbeeld voor Cloudflare:

xcaddy build --with github.com/caddy-dns/cloudflare

Dit produceert een binair bestand `caddy` in de huidige directory. U kunt ook een specifieke Caddy-versie kiezen:

xcaddy build v2.7.6 --with github.com/caddy-dns/cloudflare

6. Integreer Authelia voor authenticatie

Authelia is een open-source authenticatieserver die two-factor authentication en single sign-on (SSO) biedt. Plaats Authelia achter Caddy om webapplicaties te beveiligen. Voeg in de Caddyfile toe:

secure.example.com {
    forward_auth localhost:9091 {
        uri /api/authz/forward-auth
        copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
    }
    reverse_proxy localhost:8080
}

Caddy stuurt verkeer eerst naar Authelia op poort 9091. Alleen geverifieerde gebruikers krijgen toegang tot de applicatie op poort 8080.

7. Herstart Caddy na configuratiewijzigingen

Na elke wijziging aan de Caddyfile moet u Caddy herstarten:

sudo systemctl reload caddy

Caddy valideert de configuratie en past deze toe zonder de service te onderbreken.

Verificatie

Controleer of Caddy correct draait en HTTPS actief is:

curl -I https://example.com

De output moet `HTTP/2 200` of `HTTP/3 200` tonen. Voor een reverse proxy-check:

curl -I https://app.example.com

Controleer de logs voor certificaat- en proxy-problemen:

sudo journalctl -u caddy --since "5 minutes ago"

Veelgestelde problemen

1. Caddy kan geen certificaat aanvragen bij Let's Encrypt. Controleer of uw domeinnaam naar het juiste IP-adres wijst en dat poort 80 en 443 openstaan in de firewall. Voer `sudo ufw allow 80,443/tcp` uit als u UFW gebruikt.

2. HTTP/3 werkt niet. HTTP/3 vereist dat poort 443 UDP openstaat. Controleer dit met `sudo ufw allow 443/udp`. Sommige netwerken blokkeren QUIC-verkeer; test dan met een andere verbinding.

3. De reverse proxy geeft een 502 Bad Gateway. De backend-service draait niet of luistert op een ander adres of poort. Controleer met `sudo ss -tlnp | grep 8080` of de service daadwerkelijk op poort 8080 draait.

Caddy combineert eenvoudige configuratie met geavanceerde functionaliteit zoals automatische certificaatvernieuwing en HTTP/3. De keuze tussen de Caddyfile en JSON-configuratie bepaalt hoe ver u wilt gaan in controle — en die afweging blijft per implementatie verschillen.

← Terug naar kennisbank
← Terug naar kennisbank