Comment configurer le proxy inversé nginx

Comment configurer le proxy inversé nginx

Dans ce guide, vous apprendrez à configurer un proxy inversé Nginx avec des instructions étape par étape. Nous expliquerons également comment fonctionne un serveur proxy inversé et quels sont ses avantages. De plus, nous passons également en revue diverses options de configuration que les administrateurs Linux utilisent couramment sur leurs serveurs proxy inversés.

Dans ce tutoriel, vous apprendrez:

  • Comment fonctionne un proxy inversé
  • Quels sont les avantages d'un proxy inversé
  • Comment configurer le proxy inversé nginx
  • Comment passer les en-têtes
  • Comment configurer l'équilibrage de charge
  • Comment tester la configuration Nginx
Comment configurer le proxy inversé nginx

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution
Logiciel Nginx
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Comment fonctionne un proxy inversé?

Un système qui se trouve entre un client et un serveur Web (ou serveurs) peut être configuré comme un proxy inversé. Le service proxy agit comme un frontend et fonctionne en traitant toutes les demandes des clients entrants et en les distribuant à la base Web, une base de données et / ou d'autres serveurs backend.



Avantages d'un proxy inversé

La configuration d'un proxy inversé Nginx signifie que toutes les demandes entrantes sont traitées en un seul point, ce qui offre plusieurs avantages:

  • L'équilibrage de charge - Le proxy inversé distribue des connexions entrantes aux serveurs backend, et peut même le faire en fonction de la charge actuelle que chaque serveur est sous. Cela garantit qu'aucun des serveurs backend n'est surchargé de demandes. Il empêche également les temps d'arrêt, car le proxy inversé peut rediriger le trafic si un serveur backend se déroule hors ligne.
  • Journalisation centrale - Plutôt que d'avoir plusieurs serveurs générer des fichiers journaux, le proxy inversé peut enregistrer toutes les informations pertinentes dans un seul emplacement. Cela facilite le travail de l'administrateur, car les problèmes peuvent être isolés beaucoup plus rapidement et il n'est pas nécessaire d'analyser les fichiers journaux à partir de plusieurs emplacements lors du dépannage des problèmes.
  • Sécurité améliorée - Un proxy inversé obscurcira les informations sur les serveurs backend, ainsi que comme une première ligne de défense contre les attaques entrantes. Étant donné que le proxy inversé filtre le trafic avant de le transmettre au backend, seul le trafic inoffensif est transmis aux autres serveurs.
  • Meilleure performance - Un serveur proxy inversé peut prendre des décisions intelligentes sur la façon de distribuer la charge sur les serveurs backend, ce qui entraîne des temps de réponse plus rapides. D'autres tâches de serveur courantes telles que la mise en cache et la compression peuvent également être déchargées sur le serveur proxy inversé, libérant des ressources pour les serveurs backend.
SAVIEZ-VOUS?
Un serveur proxy inversé n'est pas un composant nécessaire dans chaque scénario d'hébergement Web. Les avantages d'un proxy inversé deviennent les plus apparents dans des conditions ou des situations de trafic élevés où plusieurs serveurs backend sont déployés et ont besoin d'une forme d'équilibrage de charge.

Pourquoi Nginx?

Maintenant que nous avons décrit les avantages d'un proxy inversé, vous vous demandez peut-être pourquoi vous devriez en configurer un avec Nginx, en particulier. L'évolutivité de Nginx et sa capacité prouvée à gérer un volume extrêmement élevé de connexions signifie qu'il est parfait pour le déploiement en tant que proxy inverse et équilibreur de charge.

Une application courante consiste à placer nginx entre les clients et un serveur Web, où il peut fonctionner comme point final pour le cryptage SSL et l'accélérateur Web. Les opérations qui augmenteraient normalement la charge sur un serveur Web, telles que le chiffrement, la compression et la mise en cache, peuvent toutes être effectuées plus efficacement via un proxy inverse Nginx.

Comment configurer les instructions étape par étape du proxy inversé Nginx

Puisque nous avons expliqué comment fonctionne un proxy inversé et quels sont les avantages à utiliser un, dans cette section, nous passerons en revue les étapes nécessaires pour configurer un proxy inverse Nginx.

  1. Installer nginxyou peut installer nginx avec le gestionnaire de packages de votre système. Sur les distributions Ubuntu et Debian, la commande est:
    $ sudo apt-get install nginx 

    Sur les distributions de Centos et Red Hat:

    # yum install nginx 
  2. Désactiver l'hôte virtuel par défaut
    # unlink / etc / nginx / sites compatible / par défaut 


  3. Créer un proxy inversé Fileall des paramètres du proxy inversé entrera dans un fichier de configuration, et ce fichier doit être placé dans le répertoire disponible des sites. Commencez par naviguer vers le répertoire suivant:
    # cd / etc / nginx / sites disponibles 

    Utilisez ensuite VI ou votre éditeur de texte préféré pour créer le fichier de configuration:

    # VI Reverse-Proxy.confli 

    Collez le modèle de configuration suivant dans ce fichier nouvellement créé:

    Server écouter 80; Emplacement / Some / Path / proxy_pass http: // Exemple.com;  
    Copie

    Remplacer exemple.com avec l'adresse IP ou le nom d'hôte du serveur que vous transmettez. Vous pouvez également spécifier un port avec le nom d'hôte, comme 127.0.0.1: 8080 Par exemple. Enregistrez vos modifications, puis quittez l'éditeur de texte.

    Notez que cela fonctionnera pour les serveurs HTTP, mais Nginx prend également en charge d'autres protocoles. Nous couvrirons ces options dans la section suivante.

  4. Activez le proxy avec vos paramètres enregistrés, activez la nouvelle configuration en créant un lien symbolique vers le répertoire compatible sur les sites:
    # ln -s / etc / nginx / sites-disponible / inverse-proxy.conf / etc / nginx / sites compatible / inverse-proxy.confli 

Serveurs non-HTTP

L'exemple ci-dessus montre comment transmettre les demandes à un serveur HTTP, mais il est également possible pour Nginx d'agir comme un proxy inverse pour Fastcgi, uwsgi, Scgi, et memcache. Plutôt que d'utiliser le proxy_pass Directive indiquée ci-dessus, remplacez-la par le type approprié:

  • proxy_pass (serveur http - comme vu ci-dessus)
  • fastcgi_pass (serveur fastcgi)
  • uwsgi_pass (serveur UWSGI)
  • SCGI_PASS (serveur SCGI)
  • memcached_pass (serveur memcached)
Exemple par défaut pour la directive fastcgi_pass

Comment passer les en-têtes

Pour configurer les en-têtes que le serveur proxy inversé passe aux autres serveurs, nous pouvons les définir dans le fichier de configuration que nous avons fait plus tôt. Utilisez le proxy_set_header directive pour ajuster les en-têtes.
Ils peuvent être configurés dans le serveur, l'emplacement ou le bloc HTTP. Par exemple:

Emplacement / Some / Path / proxy_set_header host $ host; proxy_set_header x-forwarded-proto $ schéma; proxy_set_header x-real-ip $ Remote_addr; proxy_pass http: // exemple.com; 
Copie

L'exemple ci-dessus définit trois types d'en-têtes et les définit sur les variables respectives. Il existe de nombreuses options différentes pour passer les en-têtes, mais cet exemple présente trois.

Le Héberger l'en-tête contient des informations sur quel hôte est demandé. Le X-Proto Espèce en tête si la demande est HTTP ou HTTPS. Et le X-REAL-IP L'en-tête contient l'adresse IP du client demandeur.

Comment configurer l'équilibrage de charge

L'équilibrage de charge est l'une des justifications principales pour configurer un serveur proxy inversé. Nous pouvons commencer par l'ajout de quelques lignes supplémentaires au fichier de configuration que nous avons créé plus tôt. Jetez un œil à un exemple:

Upstream backend_servers serveur host1.exemple.com; serveur host2.exemple.com; serveur host3.exemple.com;  Server écouter 80; Exemple de nom.com; emplacement / proxy_pass http: // backend_servers; 
Copie

Dans cet exemple, nous avons ajouté un contexte appelé backend_servers. À l'intérieur, le nom d'hôte / ip de chaque serveur est spécifié sur une ligne séparée.

Dans le proxy_pass Directive, où nous entrions normalement un nom d'hôte ou une adresse IP, nous avons plutôt spécifié le nom du contexte en amont défini ci-dessus: backend_servers.

Cette configuration transmettra les demandes entrantes à exemple.com aux trois hôtes différents spécifiés dans notre amont. Par défaut, Nginx transmettra ces demandes à Round Robin, ce qui signifie que chaque hôte prend un tour en suivant une demande.



Configurer des algorithmes d'équilibrage de charge

Comme mentionné, Round Robin est l'algorithme par défaut que Nginx utilisera pour faire pivoter les demandes en amont. Il existe quelques autres algorithmes disponibles, qui s'adaptent mieux à certaines situations:

  • le moins - Distribue les connexions entrantes aux serveurs backend en fonction de leur nombre actuel de connexions actives. Un serveur ne recevra une demande que si elle a le moins de connexions à ce moment. Ceci est particulièrement utile dans les applications qui nécessitent des connexions durables au client.
  • ip_hash - Distribue les connexions entrantes en fonction de l'adresse IP du client. Ceci est utile si vous avez besoin de créer la cohérence des sessions.
  • hacher - Distribue les connexions entrantes en fonction d'une clé de hachage. Ceci est utile avec les hôtes memcached, en particulier.

Spécifiez une méthode d'équilibrage de charge en haut du contexte en amont, comme ainsi:

UPSTREAM Backend_Servers le moins_connet; serveur host1.exemple.com; serveur host2.exemple.com; serveur host3.exemple.com; 
Copie

Comment tester la configuration Nginx

Vous devez toujours tester votre configuration pour les erreurs immédiatement après la modification du .confli fichier, puis redémarrer nginx.

# service nginx configTest # service nginx redémarrage 

Conclusion

Dans cet article, nous avons vu comment configurer un serveur proxy inversé avec nginx. Nous avons également appris comment fonctionne un serveur proxy inversé et quels sont les avantages à utiliser un. Nous avons couvert l'équilibrage de la charge et les différentes options dont un administrateur a besoin afin de le configurer sur leur propre proxy inversé.

Après avoir suivi les étapes de ce guide, j'espère que vous verrez une augmentation significative des performances de votre environnement Web et que vous trouverez plus facile à gérer maintenant que les connexions entrantes sont envoyées à un seul point.

Tutoriels Linux connexes:

  • Installation des en-têtes de noyau de Manjaro Linux
  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • À quelle fréquence devez-vous redémarrer votre serveur Linux?
  • OpenLitespeed comme proxy inversé
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Système linux hung? Comment s'échapper vers la ligne de commande et…
  • Ubuntu 20.04 Guide