Configurer le SSL / HTTPS (reverse proxy)
Mettez Nginx ou Caddy en reverse proxy devant votre app et activez le HTTPS avec Let's Encrypt.
Configurer le SSL / HTTPS (reverse proxy)
Pour exposer une app en HTTPS, on place un reverse proxy (Nginx ou Caddy) devant elle. Le proxy termine le TLS et renvoie le trafic en HTTP vers votre conteneur ou votre processus.
Cause / Le problème
Sans HTTPS, les navigateurs affichent « Non sécurisé », les cookies ne sont pas protégés et certaines APIs refusent la connexion (mixed content). Le certificat doit être valide et renouvelé automatiquement.
Solution
Option A — Caddy (le plus simple, HTTPS automatique)
Caddy obtient et renouvelle les certificats Let’s Encrypt tout seul. Fichier Caddyfile :
app.exemple.com {
reverse_proxy localhost:8080
}
Puis :
caddy run # ou via le paquet système, caddy start
Caddy force automatiquement la redirection HTTP → HTTPS.
Option B — Nginx + certbot
- Installez Nginx et certbot :
sudo apt install -y nginx certbot python3-certbot-nginx - Configurez le vhost
/etc/nginx/sites-available/app:server { listen 80; server_name app.exemple.com; location / { proxy_pass http://127.0.0.1:8080; 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; } } - Activez et rechargez :
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx - Générez le certificat :
Certbot ajoute lui-même le bloc HTTPS (port 443) et la redirection 80 → 443, et installe un timer de renouvellement.sudo certbot --nginx -d app.exemple.com
Erreurs courantes : « mixed content » (votre app génère des URLs http:// — faites-la confiance au header X-Forwarded-Proto), certificat non renouvelé (vérifiez sudo certbot renew --dry-run), et ports 80/443 bloqués par un pare-feu.