EQVPS

Een nginx-reverseproxy met HTTPS opzetten

Zet een net domein en automatische HTTPS voor elke app die op een lokale poort luistert. Twee wegen: nginx met Certbot, of Caddy voor automatische TLS in één regel. Stap voor stap, met kant-en-klare configuratie.

De meeste zelf-gehoste apps luisteren op een lokale poort zoals 127.0.0.1:3000 en spreken gewoon HTTP. Een reverseproxy staat ervoor op poort 80/443, sluit HTTPS af met een echt certificaat en stuurt verkeer door naar die lokale poort — hij geeft je een net https://app.yourdomain.com en laat je meerdere apps achter één IP draaien. Hier zijn de twee gangbare wegen.

Vereisten

Optie A — Caddy (automatische HTTPS, één regel)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

Dat is alles — Caddy haalt een Let's Encrypt-certificaat voor het domein en vernieuwt het automatisch.

Optie B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

Maak /etc/nginx/sites-available/app:

server {
    listen 80;
    server_name app.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Schakel het in en voeg HTTPS toe:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Certbot past de configuratie aan om HTTPS te serveren en stelt automatische vernieuwing in.

Eerlijke waarschuwingen

Volgende stappen

De reverseproxy is precies wat één server veel dingen laat serveren — zie meerdere diensten achter één IP zelf hosten. Draai je de app in een container? Begin met hoe je Docker installeert. Om de app zelf herstarts en crashes te laten overleven, zie hoe je een systemd-service maakt.

FAQ

Wat is een reverseproxy en waarom heb ik er een nodig?

Je app luistert meestal op een lokale poort zoals 127.0.0.1:3000. De reverseproxy staat ervoor op poort 80/443, sluit HTTPS af en stuurt verzoeken door naar die lokale poort. Hij geeft je een net domein, een geldig TLS-certificaat en de mogelijkheid meerdere apps achter één IP te draaien — zonder dat de app dat allemaal zelf hoeft te doen.

nginx of Caddy — wat kies ik?

Caddy is de snelste weg: het haalt en vernieuwt Let's Encrypt-certificaten automatisch, en een werkende HTTPS-proxy is één regel config. nginx is bekender en flexibeler, maar voor TLS voeg je Certbot toe. Wil je HTTPS met zo min mogelijk gedoe, gebruik Caddy; ken je nginx al of wil je de functies ervan, gebruik nginx.

Heb ik een domein nodig?

Voor een vertrouwd HTTPS-certificaat wel — Let's Encrypt geeft certificaten uit voor domeinnamen, niet voor kale IP's. Wijs een A-record naar het IP van je server, wacht op DNS-propagatie, en de proxy kan een certificaat voor die naam halen.

Welke poorten moeten open staan?

80 en 443 inkomend. Poort 80 wordt gebruikt voor de eerste certificaatuitdaging en de omleiding naar HTTPS; 443 serveert het versleutelde verkeer. Open beide in je firewall (zie de UFW-gids) en zorg dat niets anders ze al bezet.

Waarom mislukt de certificaatuitgifte?

Bijna altijd DNS of poorten. Het A-record van het domein moet naar deze server wijzen en gepropageerd zijn, en poort 80/443 moeten bereikbaar zijn (open in de firewall, niet stroomopwaarts geblokkeerd). Herstel die twee en de uitgifte lukt; zowel Caddy als Certbot proberen het opnieuw.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.