Comment configurer un Reverse Proxy NGINX en 2024

Comment configurer un Reverse Proxy NGINX en 2024

NGINX est un serveur web très performant, largement reconnu pour sa stabilité, la richesse de ses fonctionnalités et sa faible consommation de ressources. En tant que proxy inverse, il joue le rôle d’intermédiaire entre les requêtes des clients et les serveurs dorsaux, améliorant ainsi la sécurité, les performances et l’évolutivité des applications web.

Dans cet article, vous découvrirez le serveur reverse proxy NGINX, son rôle dans les architectures web modernes et les étapes de sa mise en place. Nous vous guiderons tout au long du processus d’installation et de configuration afin de garantir un fonctionnement plus efficace et plus sûr de vos applications.

Un proxy inverse NGINX est une configuration de serveur qui dirige le trafic entrant vers différents serveurs back-end en fonction de l’URL, assurant ainsi une distribution efficace de la charge et l’accessibilité des ressources.

Un serveur proxy inverse NGINX va au-delà de la simple redirection du trafic, jouant un rôle crucial dans l’amélioration des performances des applications web. Il gère habilement les contenus dynamiques et statiques, en les acheminant vers les serveurs appropriés pour un traitement et une diffusion optimaux.

Avec NGINX Plus, les utilisateurs ont accès à des fonctionnalités améliorées telles qu’un meilleur équilibrage de la charge, des capacités de surveillance étendues et des mesures de sécurité renforcées.

Dans les environnements Kubernetes, NGINX excelle en tant que contrôleur d’entrée, orchestrant l’accès externe aux services – un élément clé dans le déploiement d’applications cloud-natives évolutives.

En outre, NGINX améliore l’efficacité du réseau grâce à sa fonctionnalité de passerelle API, qui simplifie la gestion du trafic réseau et garantit un routage fiable vers les services en amont.

Comment fonctionne un Reverse Proxy NGINX ?

À la base, le proxy inverse NGINX agit comme un pont entre les appareils clients et les serveurs dorsaux, tels que LiteSpeed ou Apache, en gérant les requêtes entrantes dans une configuration de proxy inverse.

Processus de traitement des demandes

Lorsqu’un appareil client envoie des requêtes HTTP à votre application web, ces requêtes atteignent d’abord le serveur reverse proxy NGINX. NGINX examine alors les détails de la requête, tels que l’URL et les en-têtes, afin de déterminer le traitement approprié.

Pour les demandes de contenu statique, NGINX optimise la livraison en servant le contenu à partir de son cache, ce qui réduit considérablement les temps de chargement. Parallèlement, les demandes de contenu dynamique nécessitant un traitement en temps réel sont transmises au serveur back-end approprié.

Prise de décision pour le transfert des serveurs de back-end

NGINX utilise diverses méthodes d’équilibrage de la charge pour décider vers quel serveur dorsal les requêtes doivent être acheminées, comme par exemple :

  • Round robin. Distribue les demandes de manière égale sur tous les serveurs, évitant ainsi qu’un seul serveur ne soit surchargé.
  • Moins de connexions. Envoie les demandes au serveur ayant le moins de connexions actives, ce qui convient aux connexions de longue durée.
  • Hachage IP. Attribue les requêtes en fonction des adresses IP des clients, ce qui garantit que l’utilisateur interagit toujours avec le même serveur, ce qui peut être utile pour la persistance de la session.

Configurations avancées

Pour les scénarios complexes, vous pouvez configurer les règles NGINX en fonction des en-têtes de requête, du type de contenu et même des modules de code personnalisés, ce qui permet de prendre des décisions précises en matière de transfert.

Cette adaptabilité permet à NGINX de diriger efficacement le trafic vers les serveurs web et les serveurs d’application, et fonctionne comme un proxy pour les requêtes sortantes lorsqu’il est configuré à cet effet.

Conditions préalables à la configuration d’un serveur proxy inverse NGINX

Avant de configurer un reverse proxy NGINX sur un serveur privé virtuel (VPS), assurez-vous que vous disposez des éléments essentiels suivants pour une configuration fluide et efficace :

  • Accès au serveur. Vous aurez besoin d’un accès root ou sudo à votre VPS pour installer des logiciels et modifier les fichiers de configuration.
  • Nom de domaine. Idéalement, vous devriez avoir un nom de domaine qui pointe vers l’adresse IP de votre VPS. Cette configuration permet d’accéder à votre serveur reverse proxy NGINX en utilisant un nom de domaine au lieu d’une simple adresse IP.
  • Serveurs back-end. La fonction première d’un reverse proxy est d’acheminer le trafic vers un ou plusieurs serveurs back-end, tels qu’un serveur Apache. Assurez-vous que vos serveurs dorsaux sont correctement configurés et fonctionnent avant de procéder à l’installation du proxy inverse NGINX.
  • Configuration du réseau. Votre SDV doit être configuré pour autoriser le trafic HTTP et HTTPS. Ajustez les paramètres de votre pare-feu pour autoriser les connexions sur le port 80 (HTTP) et le port 443 (HTTPS).
  • Compréhension de la configuration de NGINX. Familiarisez-vous avec la syntaxe de configuration par défaut de NGINX, car la mise en place de proxys inversés implique la modification des fichiers de configuration.
  • Certificats SSL (facultatif mais recommandé). Pour les connexions HTTPS, envisagez d’obtenir un certificat SSL pour votre domaine. Le cryptage sécurise les données transmises entre le client et le reverse proxy.

Comment configurer NGINX en tant que Reverse Proxy ?

Nous allons vous guider dans la configuration d’un proxy inverse NGINX sur un VPS Hostinger fonctionnant sous Ubuntu 22.04.

1. Installer NGINX

Pour configurer un proxy inverse NGINX, vous devez d’abord installer le serveur NGINX sur votre VPS. Suivez les étapes suivantes pour installer NGINX et le faire fonctionner :

  1. Ouvrez PuTTY ou votre client SSH préféré et connectez-vous au VPS en utilisant vos identifiants.
  2. Mettez à jour et mettez à niveau les paquets de votre serveur afin d’éviter les conflits potentiels et assurez-vous de disposer des derniers correctifs de sécurité à l’aide de ces commandes Linux :
sudo apt update
sudo apt upgrade -y 
  1. Installez la dernière version de NGINX à l’aide du gestionnaire de paquets en exécutant :
sudo apt install nginx -y
  1. NGINX devrait démarrer automatiquement après l’installation. Pour vérifier que NGINX fonctionne, utilisez :
sudo systemctl status nginx

Le résultat doit indiquer que le service NGINX est “active (running)“, comme dans l’exemple suivant :

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2024-01-01 12:34:56 UTC; 2min 22s ago
     Docs: man:nginx(8)
 Main PID: 1234 (nginx)
    Tasks: 2 (limit: 1152)
   Memory: 5.3M
   CGroup: /system.slice/nginx.service
           ├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─1235 nginx: worker process

Si votre VPS a un pare-feu configuré, vous devez également autoriser le trafic vers NGINX. Pour les systèmes Uncomplicated Firewall (UFW), autorisez le trafic sur les ports appropriés avec :

sudo ufw allow 'Nginx Full'

2. Configurer la structure du fichier

Lorsque vous installez NGINX, le système met automatiquement en place plusieurs répertoires et fichiers essentiels pour sa configuration et son fonctionnement.

L’organisation des fichiers de configuration de NGINX est cruciale pour adapter ses fonctionnalités à des besoins spécifiques, tels que la gestion de diverses charges de travail et l’acheminement efficace des requêtes vers plusieurs serveurs.

Structure de base du fichier de configuration de NGINX

Le fichier de configuration principal de NGINX est nginx.conf, qui se trouve dans /etc/nginx/. Ce fichier contient des paramètres globaux et des directives permettant d’obtenir des configurations supplémentaires à partir d’autres fichiers et répertoires :

  • /etc/nginx/nginx.conf. Le fichier de configuration principal de NGINX.
  • /etc/nginx/sites-available/. Stocke les configurations potentielles d’hôtes virtuels. Chaque fichier représente un site distinct, qui peut être activé ou désactivé individuellement.
  • /etc/nginx/sites-enabled/. Contient des liens symboliques vers les configurations de sites-available que vous souhaitez que NGINX utilise. Seules les configurations liées dans ce répertoire sont actives.
  • /etc/nginx/conf.d/. Ce répertoire contient généralement des configurations globales applicables à tous les sites. Les fichiers se terminant par .conf dans ce répertoire sont automatiquement inclus dans la configuration principale de NGINX.

Directives NGINX importantes

Pour utiliser efficacement NGINX, vous devez vous familiariser avec ses directives clés :

  • server. Définit un bloc serveur – chaque bloc serveur peut héberger un site web ou une partie d’un site web. Il comprend des directives telles que listen et server_name.
  • location. Définit la manière de traiter les demandes de différentes ressources au sein d’un bloc de serveurs. Les blocs d’emplacement peuvent spécifier des contenus web et des paramètres de proxy.

3. Configurer NGINX en tant que Reverse Proxy

Pour configurer NGINX en tant que reverse proxy, vous devez créer un nouveau fichier de configuration. Ce fichier contiendra les blocs du serveur et les directives nécessaires au routage des requêtes. Suivez les étapes suivantes :

  1. Naviguez jusqu’au répertoire de configuration :
cd /etc/nginx/sites-available/
  1. Utilisez un éditeur de texte comme nano pour créer un fichier de configuration portant le nom de votre site, par exemple :
sudo nano exemple.com
  1. Dans le fichier de configuration de NGINX, configurez le serveur pour qu’il écoute sur le port 80, en utilisant la directive proxy_pass pour transmettre les demandes de proxy à votre serveur back-end :
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://your_backend_server_ip;
        proxy_set_header Host $host; # Forwarded host
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
    }
}

Remplacez your_backend_server_ip par l’adresse IP réelle de votre serveur back-end.

Configuration de l’équilibrage de la charge

Pour mettre en place un équilibreur de charge, définissez un bloc upstream et utilisez proxy_pass dans votre bloc serveur pour répartir le trafic entre plusieurs serveurs :

upstream myapp1 {
    server backend1.example.com;
    server backend2.example.com;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://myapp1;
        proxy_next_upstream error timeout;
        # Additional settings...
    }
}

Gestion du contenu statique

Pour plus d’efficacité, servez le contenu statique directement à partir de NGINX en utilisant un bloc de location séparé :

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://your_backend_server_ip;
        # Proxy settings...
    }
    location /static/ {
        root /path/to/static/files;
        expires 30d;
    }
}

Affiner les directives Proxy

Personnalisez la façon dont NGINX interagit avec vos serveurs mandataires en utilisant diverses directives proxy_ pour améliorer les performances et gérer efficacement les requêtes mandataires :

  • proxy_pass. Spécifie le protocole et l’adresse du serveur mandataire. Voici l’utilisation de base pour transférer des requêtes basées sur l’URI de la requête :
location / {
    proxy_pass http://backend.example.com;
}
  • proxy_set_header. Modifie ou ajoute des en-têtes à la requête envoyée par le serveur d’origine, en veillant à ce qu’il reçoive toutes les informations nécessaires sur la requête originale :
location / {
    proxy_pass http://backend.example.com;
    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;
}
  • proxy_cache. Active la mise en cache des réponses du serveur mandataire. A configurer avec proxy_cache_path pour définir les paramètres du cache :
http {
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    server {
        location / {
            proxy_pass http://backend.example.com;
            proxy_cache my_cache;
        }
    }
}
  • proxy_buffering. Contrôle la mise en mémoire tampon des réponses – la désactiver peut réduire la latence dans des cas d’utilisation spécifiques :
location / {
    proxy_pass http://backend.example.com;
    proxy_buffering off;
}
  • proxy_ssl. Assure des connexions sécurisées au serveur mandataire avec un cryptage SSL :
location / {
    proxy_pass https://backend.example.com;
    proxy_set_header X-Forwarded-Proto https;
}
  • proxy_buffer_size. Spécifie la taille du tampon pour la première partie de la réponse :
location / {
    proxy_pass http://backend.example.com;
    proxy_buffer_size 4k;
}
  • Proxy timeouts. Définissez les délais d’attente pour l’établissement de la connexion, la lecture et l’envoi de données au serveur mandataire, respectivement :
location / {
    proxy_pass http://backend.example.com;
    proxy_connect_timeout 60s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
}

4. Tester le proxy inverse NGINX

Une fois la configuration de votre proxy inverse NGINX terminée, il est temps d’activer les paramètres, de tester les erreurs de syntaxe et d’appliquer les changements. Voici les étapes à suivre :

  1. Créez un lien symbolique depuis votre fichier de configuration dans sites-available vers sites-enabled pour l’activer :
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  1. Testez NGINX afin d’éviter toute interruption de service due à d’éventuelles erreurs de configuration :
sudo nginx -t

Si un problème de proxy inverse NGINX est détecté, il indiquera où il se trouve, ce qui vous permettra de le résoudre et de le corriger.

Recharger ou redémarrer NGINX

Pour appliquer les changements de configuration, vous pouvez recharger ou redémarrer le serveur NGINX.

  • Recharger NGINX. Généralement préféré car il applique les changements sans interrompre les connexions existantes :
sudo systemctl reload nginx
  • Redémarrez NGINX. Si nécessaire, vous pouvez redémarrer complètement NGINX, bien que cela interrompe brièvement le service :
sudo systemctl restart nginx

Le redémarrage est parfois nécessaire pour des changements plus importants ou pour dépanner les erreurs de NGINX.

Conclusion

Dans ce guide, vous avez appris à configurer NGINX en tant que serveur proxy inverse, en couvrant l’installation, la configuration et les tests. 

En gérant et en distribuant uniformément les requêtes entrantes, vous vous assurez que votre serveur est utilisé de manière optimale et que vos applications web fonctionnent sans problème. Utilisez ces étapes comme point de départ pour améliorer les performances, la sécurité et l’évolutivité de votre environnement serveur avec NGINX.

Reverse Proxy NGINX – FAQ

Cette section répondra aux questions les plus courantes concernant les serveurs mandataires inversés NGINX.

Quels sont les avantages de l’utilisation d’un Reverse Proxy NGINX ?

L’utilisation d’un serveur proxy inverse NGINX permet d’améliorer les performances en équilibrant le trafic entre plusieurs serveurs web. Il renforce également la sécurité et l’évolutivité au sein des centres de données, ce qui en fait un outil idéal pour la gestion des applications web.

Puis-je utiliser NGINX comme Reverse Proxy pour plusieurs serveurs back-end ?

Oui, vous pouvez utiliser NGINX comme proxy inverse pour plusieurs backends, même ceux qui utilisent des technologies différentes comme Apache Tomcat. Cette configuration améliore l’allocation des ressources et stimule les performances des autres serveurs.

Quelles sont les considérations de sécurité à prendre en compte lors de la configuration d’un Reverse Proxy NGINX ?

Lors de la configuration d’un proxy inverse NGINX, utilisez SSL pour sécuriser la transmission des données. Étant donné son rôle de point d’entrée unique, il est crucial d’appliquer des mesures de sécurité solides. Veillez également à configurer correctement les WebSockets pour maintenir une communication sécurisée en temps réel.

Puis-je mettre du contenu en cache avec un proxy inverse NGINX ?

Oui, l’utilisation de la mise en cache du proxy inverse NGINX peut réduire les temps de chargement et la demande du serveur en stockant des copies des ressources fréquemment consultées. C’est particulièrement pratique pour les microservices et les hôtes virtuels, car cela permet de rationaliser la diffusion du contenu et d’améliorer l’expérience des utilisateurs.

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.