Documentation/Déploiement/Configurer Nginx en reverse proxy
Déploiement11 min2026-05-0543Populaire

Configurer Nginx en reverse proxy

Utiliser Nginx pour exposer proprement une application locale derrière un domaine ou sous-domaine.

Configurer Nginx en reverse proxy

Objectif

Un reverse proxy permet de rendre une application locale accessible depuis Internet avec un domaine.

Exemple :

  • Votre application écoute sur 127.0.0.1:3000.
  • Nginx écoute sur 80 et 443.
  • Le domaine app.exemple.fr redirige vers l'application.

Installer Nginx

Mettez le système à jour :

bash
apt update && apt upgrade -y

Installez Nginx :

bash
apt install nginx -y

Activez le service :

bash
systemctl enable nginx
systemctl start nginx

Vérifiez l'état :

bash
systemctl status nginx

Vérifier l'application locale

Votre application doit déjà tourner sur un port local.

Exemple :

bash
curl http://127.0.0.1:3000

Si la commande ne répond pas, corrigez d'abord l'application avant de configurer Nginx.

Vérifiez les ports ouverts :

bash
ss -tulpn

Créer la configuration Nginx

Créez un fichier pour votre application :

bash
nano /etc/nginx/sites-available/app.exemple.fr

Ajoutez :

nginx
server {
    listen 80;
    server_name app.exemple.fr;

    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;
    }
}

Activer le site

Créez le lien symbolique :

bash
ln -s /etc/nginx/sites-available/app.exemple.fr /etc/nginx/sites-enabled/

Testez la configuration :

bash
nginx -t

Rechargez Nginx :

bash
systemctl reload nginx

Ajouter le support WebSocket

Pour les applications qui utilisent WebSocket, ajoutez ces lignes :

nginx
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Configuration complète :

nginx
server {
    listen 80;
    server_name app.exemple.fr;

    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_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;
    }
}

Ajouter le SSL

Installez Certbot :

bash
apt install certbot python3-certbot-nginx -y

Générez le certificat :

bash
certbot --nginx -d app.exemple.fr

Testez le renouvellement :

bash
certbot renew --dry-run

Gérer plusieurs applications

Chaque application peut avoir son propre fichier Nginx.

Exemples :

text
/etc/nginx/sites-available/api.exemple.fr
/etc/nginx/sites-available/panel.exemple.fr
/etc/nginx/sites-available/app.exemple.fr

Chaque domaine peut pointer vers un port différent :

nginx
proxy_pass http://127.0.0.1:3001;
nginx
proxy_pass http://127.0.0.1:3002;

Erreurs fréquentes

502 Bad Gateway

L'application locale ne répond pas ou le port est incorrect.

bash
curl http://127.0.0.1:3000

404 Nginx

Le server_name ne correspond pas au domaine demandé ou le mauvais fichier est activé.

Nginx ne redémarre pas

Testez la configuration :

bash
nginx -t

Le domaine ne répond pas

Vérifiez que le DNS pointe vers le VPS et que le port 80 est ouvert.


Conclusion

Nginx est maintenant configuré en reverse proxy. Vous pouvez exposer une application locale derrière un domaine, ajouter le HTTPS avec Certbot et gérer plusieurs services sur le même VPS.

Ce guide vous a aidé ?

Votre retour permet de repérer les guides à améliorer en priorité.