Sommaire / Guides / Nginx + SSL

Nginx proxy inverse avec HTTPS automatique

Un Nginx devant tout : votre application Node, un API, un tableau de bord, un panneau de jeu. Ajoutez des certificats Let's Encrypt gratuits qui se renouvellent et connectez WebSockets sans douleur.

1. DNS en premier

Créer un enregistrement A : app.example.com → YOUR_SERVER_IP. Attendez quelques minutes et vérifiez à partir du serveur:

getent hosts app.example.com

certbot ne délivrera pas de certificat avant que DNS points sur votre serveur.

2. Installez Nginx et ouvrez le pare-feu

apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp

3. La configuration inverse du proxy

cat > /etc/nginx/sites-available/app <<'EOF'
server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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";
        proxy_read_timeout 300s;
    }
}
EOF
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Les deux Upgrade lignes permettent WebSockets; le temps de lecture long empêche les connexions lentes (SSE, le long sondage, les panneaux de jeu) d'être coupé à 60 secondes. Remplacer 127.0.0.1:3000 avec le port que votre application écoute.

4. HTTPS dans une commande

certbot --nginx -d app.example.com --redirect -m [email protected] --agree-tos

certbot modifie la configuration, ajoute le bloc 443, installe un timer de renouvellement et définit HTTP → HTTPS redirection. Vérifier les travaux de renouvellement :

certbot renew --dry-run
systemctl list-timers | grep certbot

5. Ajouter plus de services

Une autre application sur le port 3001 ? Copier le bloc serveur, modifier server_name et proxy_pass, lance encore certbot. Un Nginx peut contenir des dizaines de sites, un serveur de 6,5 € les gère facilement.

Vous préférez encore moins de config ? Caddy fait HTTPS avec deux lignes — Nginx gagne lorsque vous avez besoin d'un contrôle fin des en-têtes, des caches et des timeouts.

6. Quand quelque chose casse

nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com

502 signifie que Nginx est bien mais votre application est en bas ou sur le mauvais port. 404 avec une mauvaise page signifie qu'un autre bloc de site capture la demande — vérifier server_name.

Réponses rapides

Ai-je besoin d'une IP dédiée pour HTTPS ?

Pour l'accès standard au navigateur — oui, vous avez besoin d'un plan avec un IPv4 dédié, car Let's Encrypt valide votre domaine sur le port 80 ou 443. Les plans NAT avec les ports transmis fonctionnent pour les robots, tunnels et VPN, pas pour les sites publics.

Les certificats Let's Encrypt sont-ils vraiment gratuits ?

Oui, et ils se renouvellent automatiquement tous les 60 jours via le système timer certbot installe. Il n'y a pas de niveau payé nécessaire pour un site normal.

Nginx peut-il proxyr un serveur Minecraft ou de jeu ?

Pas de trafic UDP — Nginx parle seulement HTTP. Les jeux utilisent leurs propres ports, les ouvrir directement dans le pare-feu à la place.

Obtenez un serveur avec un IPv4 dédié — les plans commencent à €6.5/mois.

Autres