Maison  >  Article  >  Opération et maintenance  >  Ce que nginx peut faire

Ce que nginx peut faire

步履不停
步履不停original
2019-06-20 15:33:013169parcourir

Ce que nginx peut faire

La création de Nginx

Vous n'avez jamais entendu parler de Nginx ? Alors vous devez avoir entendu parler de son « pair » Apache ! Nginx, comme Apache, est un serveur WEB. Basés sur le style architectural REST, utilisant l'URI Uniform Resources Identifier ou l'URL Uniform Resources Locator comme base de communication, divers services réseau sont fournis via le protocole HTTP.

Cependant, ces serveurs étaient limités par l'environnement au moment de leur conception initiale, comme l'échelle des utilisateurs, la bande passante du réseau, les fonctionnalités du produit et d'autres limitations à l'époque, et leur positionnement et leur développement respectifs étaient différents . Cela donne également à chaque serveur WEB ses propres caractéristiques distinctives.

Apache a une longue période de développement et est le serveur numéro un incontesté au monde. Il présente de nombreux avantages : stable, open source, multiplateforme, etc. À l’époque où elle est apparue, l’industrie Internet était bien inférieure à ce qu’elle est aujourd’hui. Il est donc conçu pour être un poids lourd. Il ne prend pas en charge les serveurs à haute concurrence. L'exécution de dizaines de milliers d'accès simultanés sur Apache entraînera une consommation importante de mémoire par le serveur. La commutation entre processus ou threads par le système d'exploitation consomme également une grande quantité de ressources CPU, ce qui entraîne une réduction de la vitesse de réponse moyenne des requêtes HTTP.

Tout cela détermine qu'Apache ne peut pas devenir un serveur WEB hautes performances, et le serveur léger à haute concurrence Nginx a vu le jour.

L'ingénieur russe Igor Sysoev a développé Nginx en langage C alors qu'il travaillait pour Rambler Media. En tant que serveur WEB, Nginx a toujours fourni à Rambler Media des services excellents et stables.

Ensuite, Igor Sysoev a open source le code Nginx et lui a accordé une licence de logiciel libre.

Parce que :

  • Nginx utilise une architecture basée sur les événements, ce qui lui permet de prendre en charge des millions de connexions TCP.
  • Licence logicielle hautement modulaire et gratuite Les certificats permettent des licences tierces. des modules de fête émergent dans un flux sans fin (c'est une ère d'open source ~)
  • Nginx est un serveur multiplateforme qui peut fonctionner sous Linux, Windows, FreeBSD, Solaris, AIX, Mac OS et d'autres systèmes d'exploitation. systèmes
  • Ces excellentes conceptions apportent une grande stabilité

Donc, Nginx est populaire !

Là où Nginx entre en jeu

Nginx est un serveur HTTP et un serveur proxy inverse gratuit, open source et hautes performances ; c'est également un serveur proxy IMAP, POP3 et SMTP ; peut être utilisé comme serveur HTTP pour publier le site Web, et Nginx peut être utilisé comme proxy inverse pour implémenter l'équilibrage de charge.

À propos des agents

En parlant d'agents, nous devons tout d'abord clarifier un concept. Le soi-disant agent est un représentant et un canal

En ce moment, deux rôles sont impliqués, l'un est le rôle d'agent et l'autre est le rôle cible. Le processus dans lequel le personnage d'agent accède au rôle cible pour effectuer certaines tâches via cet agent est appelé le processus d'opération d'agent ; dans la vie ~ un client s'est rendu dans un magasin spécialisé adidas et a acheté une paire de chaussures. Ce magasin spécialisé est un agent, le rôle d'agent est le fabricant adidas et le rôle cible est l'utilisateur.

Procuration directe

Avant de parler de proxy inverse, jetons un coup d'œil au proxy direct est également le modèle de proxy le plus courant avec lequel tout le monde entre en contact. Deux aspects En parlant du modèle de traitement du proxy direct, j'expliquerai ce qu'est le proxy direct du point de vue du logiciel et de la vie.

Dans l'environnement réseau actuel, si nous devons accéder à certains sites Web étrangers en raison de besoins techniques, vous constaterez que nous ne pouvons pas accéder à certains sites Web étrangers via un navigateur. À l'heure actuelle, tout le monde peut utiliser une opération FQ. accès. La méthode principale de FQ est de trouver un serveur proxy qui peut accéder aux sites Web étrangers. Nous envoyons la demande au serveur proxy, et le serveur proxy accède au site Web étranger et nous transmet ensuite les données consultées !

Le mode proxy ci-dessus est appelé proxy de transfert. La plus grande caractéristique du proxy de transfert est que le client est très clair sur l'adresse du serveur auquel il souhaite accéder Le serveur sait uniquement à quel serveur proxy ; la demande provient et il n'est pas clair de quel client spécifique elle provient ; le mode proxy de transfert bloque ou masque les informations réelles du client. Regardons un diagramme schématique (j'ai mis le client et le proxy direct ensemble, ils appartiennent au même environnement, je les présenterai plus tard) :

Ce que nginx peut faire

Client Un serveur proxy de transfert doit être mis en place. Bien entendu, le prérequis est de connaître l'adresse IP du serveur proxy de transfert et le port du programme proxy. Comme le montre l'image.

Ce que nginx peut faire

En résumé : Procureur Forward, "Il agit comme mandataire du client et effectue des demandes au nom du client", est un proxy situé entre le client et le serveur A entre les serveurs d'origine. Afin d'obtenir le contenu du serveur d'origine, le client envoie une requête au proxy et précise la cible (serveur d'origine). Le proxy transmet ensuite la requête au serveur d'origine et renvoie la requête. contenu obtenu au client. Le client doit définir certains paramètres spéciaux pour utiliser le proxy de transfert.

Utilisations du proxy direct :
(1) Accéder à des ressources qui étaient initialement inaccessibles, telles que Google
(2) La mise en cache peut être effectuée pour accélérer l'accès aux ressources
(3) Client accéder Autoriser, se connecter en ligne pour l'authentification
(4) Le proxy peut enregistrer les enregistrements d'accès des utilisateurs (gestion du comportement en ligne) et masquer les informations des utilisateurs de l'extérieur

Proxy inverse

Comprendre ce qu'est un transfert proxy est, nous continuons à examiner les méthodes de traitement du proxy inverse. Par exemple, pour un certain site Web dans mon pays, le nombre de visiteurs connectés au site Web à la même heure chaque jour a explosé. capable de satisfaire le désir d'achat croissant des gens. À l'heure actuelle, un terme familier est utilisé : déploiement distribué, c'est-à-dire en déployant plusieurs serveurs pour résoudre le problème de la limitation du nombre de visiteurs d'un certain site Web ; également implémenté directement en utilisant Nginx pour le proxy inverse, et en encapsulant Nginx et d'autres. Le composant a ensuite reçu un nom fantaisiste : Tengine. Les enfants intéressés peuvent visiter le site officiel de Tengine pour afficher des informations spécifiques : http://tengine.taobao.org/. Alors, comment le proxy inverse implémente-t-il les opérations de cluster distribué ? Regardons d'abord un diagramme schématique (j'encadre le serveur et le proxy inverse ensemble, ils appartiennent tous les deux au même environnement, je les présenterai plus tard) :

Ce que nginx peut faire

Comme vous pouvez le voir clairement sur le diagramme ci-dessus, une fois que le serveur Nginx a reçu les requêtes envoyées par plusieurs clients au serveur, il les distribue à l'entreprise back-end selon certaines règles. l'a traité. À l'heure actuelle, la source de la requête, c'est-à-dire le client, est claire, mais il n'est pas clair quel serveur gère la requête qui joue le rôle de proxy inverse.

Le client ignore l'existence du proxy. Le proxy inverse est transparent pour le monde extérieur. Les visiteurs ne savent pas qu'ils visitent un proxy. Parce que le client ne nécessite aucune configuration pour y accéder.

Proxy inversé, "Il agit comme un proxy pour le serveur et reçoit les requêtes au nom du serveur", est principalement utilisé pour les serveurs Dans le cas d'un déploiement distribué en cluster, le proxy inverse masque les informations sur le serveur.

Le rôle du proxy inverse :
(1) Pour assurer la sécurité de l'intranet, le proxy inverse est généralement utilisé comme adresse d'accès au réseau public, et le serveur Web est l'intranet
(2) Load Balance, optimisez la charge du site Web via le serveur proxy inverse

Scénario de projet

Normalement, lorsque nous exploitons le projet lui-même, le proxy direct et le proxy inverse sont susceptibles de Dans un scénario d'application, le client proxy de transfert demande d'accéder au serveur cible. Le serveur cible est un serveur inverse à intérêt unique, qui effectue un proxy inverse sur plusieurs serveurs de traitement métier réels. Le diagramme de topologie spécifique est le suivant :

Ce que nginx peut faire

La différence entre les deux

J'ai pris une capture d'écran pour illustrer la différence entre le proxy direct et le proxy inverse, comme le montre la figure.

Ce que nginx peut faire

Illustration :

Dans le proxy direct, le Proxy et le Client appartiennent au même LAN (dans la case sur l'image), et le client les informations sont masquées ;

Dans le proxy inverse, le proxy et le serveur appartiennent au même réseau local (à l'intérieur de la case sur l'image), cachant les informations du serveur

En fait, le proxy fait la même chose ; dans les deux proxys, il envoie et reçoit des requêtes et des réponses au nom du serveur, mais d'un point de vue structurel, la gauche et la droite sont interchangées, c'est pourquoi la méthode proxy apparue plus tard est appelée proxy inverse.

Équilibrage de charge

Nous avons clarifié le concept de ce qu'on appelle le serveur proxy, donc ensuite, Nginx joue le rôle d'un serveur proxy inverse selon quelles règles distribue-t-il les requêtes ? tissu? Les règles de distribution peuvent-elles être contrôlées pour différents scénarios d'application de projet ?

Le nombre de requêtes envoyées par le client et reçues par le serveur proxy inverse Nginx mentionné ici est ce que nous appelons la charge.

La règle selon laquelle le nombre de requêtes est distribuée à différents serveurs pour être traitées selon certaines règles est une règle d'équilibrage.

Donc ~ le processus de répartition des requêtes reçues par le serveur selon des règles est appelé équilibrage de charge.

Dans le processus de fonctionnement réel du projet, l'équilibrage de charge a deux types : l'équilibrage de charge matérielle et l'équilibrage de charge logicielle est également appelé charge dure, comme l'équilibrage de charge F5, qui est relativement coûteux, mais les données le sont. stable et sûr. Il existe une très bonne garantie de performances, etc. Seules des entreprises telles que China Mobile et China Unicom choisiront des opérations de charge lourde ; davantage d'entreprises choisiront d'utiliser l'équilibrage de charge logiciel pour des raisons de coûts. Un mécanisme de distribution de file d'attente de messages implémenté en combinaison avec le matériel hôte.

Ce que nginx peut faire

L'algorithme de planification d'équilibrage de charge pris en charge par Nginx est le suivant :

  1. Interrogation de poids (par défaut, couramment utilisé) : les requêtes reçues sont réparties en fonction pondérer Pour différents serveurs backend, même si un certain serveur backend tombe en panne pendant l'utilisation, Nginx supprimera automatiquement le serveur de la file d'attente et l'acceptation de la demande ne sera en aucun cas affectée. De cette manière, une valeur de poids (poids) peut être définie pour différents serveurs back-end afin d'ajuster le taux d'allocation des demandes sur différents serveurs ; plus les données de poids sont grandes, plus la probabilité d'être attribuée à la valeur de poids est grande ; , Il est principalement ajusté pour différentes configurations matérielles de serveur back-end dans des environnements de travail réels.
  2. ip_hash (couramment utilisé) : chaque requête est mise en correspondance en fonction du résultat de hachage de l'adresse IP du client initiateur. Sous cet algorithme, un client avec une adresse IP fixe accédera toujours au même serveur back-end, qui est. également certain. Dans une certaine mesure, cela résout le problème du partage de session dans un environnement de déploiement de cluster.
  3. équitable : ajustement intelligent de l'algorithme de planification, allocation dynamique et équilibrée basée sur le temps écoulé entre le traitement de la demande et la réponse du serveur back-end. Les serveurs avec des temps de réponse courts et une efficacité de traitement élevée ont une forte probabilité d'être. attribués aux requêtes, et les serveurs avec des temps de réponse longs ont une efficacité de traitement élevée. Les serveurs faibles se voient attribuer moins de requêtes ; un algorithme de planification qui combine les avantages des deux premiers ; Cependant, il convient de noter que Nginx ne prend pas en charge l'algorithme fair par défaut. Si vous souhaitez utiliser cet algorithme de planification, veuillez installer le module amont_fair.
  4. url_hash : distribuez les requêtes en fonction du résultat de hachage de l'URL consultée. L'URL de chaque requête pointera vers un serveur fixe sur le backend, ce qui peut améliorer l'efficacité de la mise en cache lorsque Nginx est utilisé comme serveur statique. Il convient également de noter que Nginx ne prend pas en charge cet algorithme de planification par défaut. Si vous souhaitez l'utiliser, vous devez installer le package logiciel de hachage Nginx.

Comparaison de plusieurs serveurs Web couramment utilisés

对比项服务器 Apache Nginx Lighttpd
Proxy代理 非常好 非常好 一般
Rewriter 非常好 一般
Fcgi 不好 非常好
热部署 不支持 支持 不支持
系统压力 很大 很小 比较小
稳定性 非常好 不好
安全性 一般 一般
静态文件处理 一般 非常好
反向代理 一般 非常好 一般

Pour plus d'articles techniques liés à Nginx, veuillez visiter le Tutoriel Nginx rubrique pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn