Dans cet article, nous détaillons comment configurer nginx comme reverse proxy pour une application Node.js et gérer un certificat SSL gratuit via Let’s Encrypt. Cette approche améliore la sécurité, facilite la montée en charge et simplifie la maintenance de vos services web.

1. prérequis

  • Serveur Ubuntu 22.04 ou Debian 11
  • Node.js déployée en service systemd ou Docker
  • Nom de domaine pointant vers votre IP publique
  • Accès SSH en root ou sudo

2. installation de nginx

2.1. mise à jour du système

sudo apt update && sudo apt upgrade -y

2.2. installation et démarrage

sudo apt install nginx -y  
sudo systemctl enable nginx  
sudo systemctl start nginx

Vérifiez qu’nginx écoute bien sur le port 80 :

ss -tlnp | grep nginx

3. configuration de nginx comme proxy inverse

Placez votre fichier de configuration dans /etc/nginx/sites-available puis activez-le.

3.1. exemple de fichier /etc/nginx/sites-available/node-app.conf

server {  
    listen 80;  
    server_name mon-domaine.com;  

    location / {  
        proxy_pass http://localhost:3000;  
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection 'upgrade';  
        proxy_set_header Host $host;  
        proxy_cache_bypass $http_upgrade;  
    }  
}
sudo ln -s /etc/nginx/sites-available/node-app.conf /etc/nginx/sites-enabled/  
sudo nginx -t && sudo systemctl reload nginx

4. mise en place du certificat ssl let’s encrypt

4.1. installation de certbot

sudo apt install certbot python3-certbot-nginx -y

4.2. obtention et renouvellement

sudo certbot --nginx -d mon-domaine.com  
sudo systemctl status certbot.timer   # vérifie le renouvellement automatique

Certbot ajoute automatiquement la configuration SSL dans votre bloc server et redirige le trafic HTTP vers HTTPS.

5. tests de charge et bonnes pratiques

5.1. bench avec ab ou wrk

wrk -t4 -c100 -d30s https://mon-domaine.com/  
# Exemple : 12 000 requêtes/s en moyenne, latence p99 < 50 ms

5.2. conseils sécurité et performance

  • Activez gzip et http2 dans nginx pour réduire la latence.
  • Utilisez proxy_cache pour les ressources statiques (API REST peu dynamiques).
  • Désactivez les modules inutiles (server_tokens off;).
  • Surveillez les métriques avec Prometheus et Grafana (Node.js).

6. conclusion

Vous disposez désormais d’une configuration robuste : nginx gère l’équilibrage, termine le SSL et laisse Node.js se concentrer sur la logique applicative. Cette architecture est éprouvée en production pour garantir sécurité, fiabilité et performance.

Envie de personnaliser ce setup pour votre projet SaaS ? Découvrez nos services ou contactez-nous pour un accompagnement sur mesure.