Chapter 5 · 5.3
Een app achter een reverse proxy
This article hasn't been translated yet. You're reading the Dutch version.
Veel apps hebben een eigen kleine webserver op een poort, zoals 3001 of 5678. Die zet je niet open naar internet. Je webserver ontvangt het verkeer op 443 met https en geeft het door aan de app: een reverse proxy.
Met Caddy
Luistert de app op de server zelf op poort 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy geeft de juiste kopregels (zoals X-Forwarded-For en X-Forwarded-Proto) en websockets vanzelf door. Draait de app in Docker naast Caddy, dan gebruik je de naam van de container, zoals in Je werkmap met compose.yaml, .env en Caddy.
Met nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Daarna sudo nginx -t, sudo systemctl reload nginx en sudo certbot --nginx -d status.example.com.
Goed om te weten
- Laat de app alleen op
127.0.0.1luisteren, niet op alle adressen. Dan kan niemand om je proxy heen. - Veel apps willen weten op welk adres ze bereikbaar zijn, bijvoorbeeld met een instelling als
DOMAINofN8N_HOST. Vul daar het https-adres in. - Een beheerscherm dat niet voor iedereen is, zet je extra af: met een wachtwoord in de app zelf, met tweestapsverificatie, of alleen via een SSH-tunnel (zie Een SSH-config: inloggen met een korte naam).
- Extra beveiligingskopregels zoals HSTS zet je met
headerin Caddy ofadd_headerin nginx. Zet HSTS pas aan als https overal goed werkt.
