Comment configurer Nginx en tant que proxy inverse

Guide de configuration de Nginx en tant que proxy inverse, expliquant l'installation, la configuration des blocs de serveurs, le transfert des requêtes vers les serveurs backend, la gestion des en-têtes, ainsi que la configuration SSL/TLS facultative pour une sécurité et des performances accrues.

Intermediate

Nginx est un serveur web puissant qui peut également fonctionner efficacement comme proxy inverse. En le configurant comme proxy inverse, il peut être placé en amont de vos serveurs d'applications, afin de traiter les requêtes entrantes des clients et de les transférer vers les serveurs backend appropriés. Cette configuration permet d'améliorer les performances, la sécurité et l'évolutivité.

Avantages de l'utilisation de Nginx en tant que proxy inverse

  • Équilibrage de charge : répartit le trafic entrant entre plusieurs serveurs backend.
  • Sécurité renforcée : masquez la structure du réseau interne et les serveurs backend à l'accès direct des clients.
  • Termination SSL/TLS : gère le chiffrement et le déchiffrement HTTPS, déchargeant ainsi les applications backend de cette tâche.
  • Mise en cache : mettez en cache le contenu statique et dynamique pour réduire la charge du serveur et améliorer les temps de réponse.
  • Compression : compresse les réponses pour accélérer leur transmission.
  • Service de contenu statique : Servir efficacement les fichiers statiques directement, sans surcharger les serveurs d'applications.

1. Installez Nginx

Si Nginx n'est pas déjà installé sur votre serveur, vous pouvez l'installer à l'aide du gestionnaire de paquets de votre distribution.

  • Pour Ubuntu/Debian : bash sudo apt update sudo apt install nginx
  • Pour CentOS/RHEL/Fedora : bash sudo dnf install nginx # or yum for older versions

Après l'installation, démarrez le service Nginx et activez-le pour qu'il se lance au démarrage :

sudo systemctl start nginx
sudo systemctl enable nginx

Vous pouvez vérifier que Nginx est en cours d'exécution en vous rendant à l'adresse http://localhost dans votre navigateur web.

2. Localiser les fichiers de configuration Nginx

Les fichiers de configuration Nginx se trouvent généralement dans /etc/nginx/. Le fichier de configuration principal est généralement nginx.conf. Vous trouverez souvent un sites-available répertoire contenant les configurations individuelles des sites, qui sont ensuite liées par des liens symboliques vers sites-enabled pour les activer.

3. Configurer le bloc serveur

Vous devrez créer ou modifier un bloc serveur dans votre configuration Nginx. Ce bloc définit la manière dont Nginx traite les requêtes pour un domaine ou une adresse IP spécifique.

Un bloc serveur de base pour un proxy inverse se présente comme suit :

server {
    listen 80; # Nginx listens on port 80 for incoming HTTP requests
    server_name your_domain.com www.your_domain.com; # Replace with your domain name

    location / {
        proxy_pass http://backend_server_ip:port; # Forward requests to your backend server
        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;
    }
}

Explication des directives :

  • listen 80;: Nginx écoutera les requêtes HTTP entrantes sur le port 80.
  • server_name: Spécifie les noms de domaine auxquels ce bloc serveur doit répondre.
  • location /: Ce bloc définit la manière dont les requêtes correspondant au chemin racine (/) sont traitées. Vous pouvez créer des location pour différents chemins (par exemple, location /api/).
  • proxy_pass: Il s'agit de la directive principale pour le proxy inverse. Elle indique à Nginx de transférer les requêtes vers l'adresse IP et le port du serveur backend spécifié.
  • proxy_set_header: Ces directives sont essentielles pour transmettre les informations d'origine du client (telles que l'adresse IP et l'hôte) au serveur backend, ce qui peut être utile pour la journalisation et la logique d'application.

4. Activer la configuration

Si vous avez créé un nouveau fichier de configuration dans sites-available/, vous devez l'activer en créant un lien symbolique vers sites-enabled/:

sudo ln -s /etc/nginx/sites-available/my_reverse_proxy /etc/nginx/sites-enabled/

5. Tester la configuration Nginx

Avant de redémarrer Nginx, vérifiez toujours que votre configuration ne contient pas d'erreurs de syntaxe :

sudo nginx -t

Si le test est réussi, un message s'affiche pour indiquer que la syntaxe est correcte et que le test s'est déroulé avec succès.

6. Recharger Nginx

Pour appliquer la nouvelle configuration, rechargez Nginx :

sudo systemctl reload nginx

7. Testez votre proxy inverse

Ouvrez un navigateur Web et accédez à http://your_domain.com (ou l'adresse IP de votre serveur si vous n'avez pas configuré de domaine). Nginx devrait désormais transférer votre requête vers le serveur backend, et vous devriez voir le contenu fourni par votre application backend.

Cette configuration de base constitue le fondement de l'utilisation de Nginx en tant que proxy inverse. Vous pouvez la personnaliser davantage avec des fonctionnalités telles que la terminaison SSL/TLS, l'équilibrage de charge, la mise en cache et des règles de routage plus avancées.