Configurer un Reverse Proxy Nginx

Le Reverse Proxy est une fonctionnalité essentielle qui permet de rediriger le trafic entrant (ex: port 80/443) vers un service interne (ex: port 3000). Cela sécurise l'architecture et simplifie l'accès à vos applications (NodeJS, Python, Docker...).

Pourquoi faire ça ? Cela permet d'avoir une seule porte d'entrée (Nginx) qui gère le SSL (HTTPS), la compression et le cache, protégeant ainsi vos applications backend.

1. Principe de fonctionnement

Le flux de connexion se déroule comme suit :

Utilisateur (Internet) app.domaine.fr (Nginx) localhost:3000 (Votre App)

2. Configuration

Créez ou éditez votre fichier de configuration de site (vHost) dans Nginx :

sudo nano /etc/nginx/sites-available/app.conf

Utilisez cette configuration standard de proxy :

server {
    listen 80;
    server_name app.domaine.fr;

    location / {
        # La redirection vers le service interne
        proxy_pass http://localhost:3000;
        
        # Transmission des en-têtes (IP réelle du client, etc.)
        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;
    }
}

3. Activation et Redémarrage

Si vous venez de créer le fichier, il faut l'activer en créant un lien symbolique :

sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
Toujours vérifier avant de redémarrer : Une erreur de syntaxe peut couper tous vos sites Web. Lancez toujours cette commande de test avant de redémarrer :
# Tester la configuration
sudo nginx -t

# Si le test est OK, redémarrez Nginx
sudo systemctl restart nginx