Web

Comment configurer un Reverse Proxy Nginx avec SSL Let's Encrypt

Configurez Nginx en tant que reverse proxy pour rediriger le trafic externe vers vos applications web locales tout en sécurisant l'accès avec un certificat SSL gratuit.

Niveau

Intermédiaire

Durée de lecture

9 min

Étapes

6

Un Reverse Proxy (ou proxy inverse) est un serveur intermédiaire placé devant vos applications web (Node.js, Python, conteneurs Docker, etc.) pour intercepter les requêtes des clients, gérer la sécurité et acheminer le trafic. En utilisant Nginx comme Reverse Proxy, vous pouvez centraliser la gestion de vos certificats SSL avec Let's Encrypt, masquer les ports internes de vos services (comme 3000 ou 8080) et booster les performances d'affichage.

1

Installer Nginx sur Debian / Ubuntu

Nginx est disponible par défaut dans les dépôts officiels de toutes les distributions Linux majeures. Installez-le et assurez-vous qu'il démarre correctement au démarrage.

sudo apt updatesudo apt install -y nginx # Activer et démarrer le service Nginxsudo systemctl enable --now nginx # Vérifier le statutsudo systemctl status nginx
2

Préparer votre application locale (Exemple)

Dans ce guide, nous supposons que vous avez une application (par exemple en Node.js) fonctionnant en arrière-plan sur le port local 3000 de votre VPS ('http://127.0.0.1:3000'). Notre but est de la rendre accessible publiquement via le sous-domaine 'app.votre-domaine.com' sans exposer ce port.

# Exemple de commande pour vérifier qu'un service local écoute bien sur le port 3000 :sudo ss -tulnp | grep 3000
3

Créer le bloc de configuration Nginx (VirtualHost)

Créez un fichier de configuration propre pour votre application dans le répertoire de Nginx destiné aux sites disponibles.

# 1. Ouvrez le fichier de configuration avec nano :sudo nano /etc/nginx/sites-available/mon-app.conf # 2. Collez la configuration de reverse proxy ci-dessous :server {    listen 80;    server_name app.votre-domaine.com;     location / {        proxy_pass http://127.0.0.1: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;        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;    }}
4

Activer le site et tester la syntaxe de Nginx

Pour activer votre bloc de configuration, créez un lien symbolique vers le dossier 'sites-enabled'. Testez toujours la syntaxe de Nginx avant de redémarrer le service.

# Créer le lien symbolique d'activationsudo ln -s /etc/nginx/sites-available/mon-app.conf /etc/nginx/sites-enabled/ # Tester la syntaxe de la configuration Nginxsudo nginx -t # Si le test affiche 'syntax is ok', rechargez Nginx pour appliquersudo systemctl reload nginx
5

Obtenir un certificat SSL Let's Encrypt gratuit

Sécurisez immédiatement l'ensemble des échanges en installant Certbot et son plugin Nginx officiel afin d'obtenir un certificat SSL SSL/TLS gratuit Let's Encrypt avec redirection automatique vers le HTTPS.

sudo apt install -y certbot python3-certbot-nginx # Lancer la génération automatique et l'intégration du certificat SSL dans Nginxsudo certbot --nginx -d app.votre-domaine.com
6

Automatiser le renouvellement des certificats SSL

Les certificats émis par Let's Encrypt sont valides pendant 90 jours. Heureusement, le paquet Certbot configure automatiquement un script cron (tâche planifiée) pour gérer le renouvellement en toute transparence.

# Tester manuellement le processus de renouvellement automatique (Simulation dry-run) :sudo certbot renew --dry-run

Pour terminer

Vous avez mis en œuvre un reverse proxy Nginx moderne, performant et hautement sécurisé à l'aide d'un certificat de chiffrement SSL de bout en bout. Vos applications web sont maintenant prêtes à accueillir les utilisateurs sous leur nom de domaine propre !

Problèmes fréquents

Nginx renvoie une erreur 502 Bad Gateway : comment la corriger ?

L'erreur 502 signifie que Nginx est actif, mais qu'il ne parvient pas à contacter votre application locale spécifiée dans 'proxy_pass'. Vérifiez que votre application (ex: Node.js) tourne bien en arrière-plan et écoute sur le bon port ('http://127.0.0.1:3000').

Comment configurer les websockets (Socket.io) avec le Reverse Proxy Nginx ?

La configuration fournie à l'étape 3 gère déjà nativement les WebSockets grâce aux directives 'proxy_set_header Upgrade' et 'Connection' requises pour maintenir la connexion ouverte.

Puis-je utiliser un seul serveur Nginx pour gérer plusieurs applications ?

Absolument. Il vous suffit de créer un fichier de configuration séparé par application dans '/etc/nginx/sites-available/' avec des valeurs 'server_name' uniques (ex: app1.domaine.com, app2.domaine.com) redirigeant vers leurs ports internes respectifs.

Ce guide vous a servi ? Les autres sont au même endroit.

Revenir à la liste des guides

Une étape qui ne passe pas ?

Collez votre message d'erreur sur le Discord. C'est souvent réglé en quelques minutes, et ça nous signale les passages à préciser dans le guide.