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.
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.
apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp
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.
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
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.
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.
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.
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.
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.