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 :
Donc, Nginx est populaire !
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.
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.
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) :
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.
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
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) :
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
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 :
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.
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.
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.
L'algorithme de planification d'équilibrage de charge pris en charge par Nginx est le suivant :
对比项服务器 | 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!