L'architecture modulaire de Nginx
La structure interne de Nginx est composée d'une partie centrale et d'une série Il est composé de modules fonctionnels. (Apprentissage recommandé : utilisation de nginx)
Cette division vise à rendre la fonction de chaque module relativement simple, facile à développer et également pratique pour l'expansion fonctionnelle du système. Pour faciliter la description, nous utiliserons le noyau Nginx ci-dessous pour faire référence aux principales parties fonctionnelles de Nginx.
Nginx fournit les fonctions de base d'un serveur Web, ainsi que les fonctions de proxy inverse de service Web et de proxy inverse de service de messagerie.
Le noyau Nginx implémente le protocole de communication sous-jacent, crée un environnement d'exécution de base pour les autres modules et processus Nginx, et crée une base de collaboration pour les autres modules. De plus, la plupart des fonctions liées au protocole ou aux applications sont implémentées dans ces modules.
Présentation du module
Nginx organise chaque module fonctionnel en chaîne Lorsqu'une requête arrive, la requête passe tour à tour par certains ou tous les modules de cette chaîne pour être traitée. . Chaque module implémente une fonction spécifique.
Par exemple, un module qui implémente la décompression des requêtes, un module qui implémente SSI, un module qui implémente la communication avec le serveur en amont et un module qui implémente la communication avec le service FastCGI.
Il existe deux modules spéciaux. Ils sont situés entre le noyau Nginx et divers modules fonctionnels. Ces deux modules sont le module http et le module mail.
Ces deux modules implémentent une autre couche d'abstraction au-dessus du noyau Nginx, gèrent les événements liés au protocole HTTP et aux protocoles liés au courrier électronique (SMTP/POP3/IMAP), et garantissent que ces événements peuvent être traités correctement. Appelez un autre modules de fonction de manière séquentielle.
Actuellement, le protocole HTTP est implémenté dans le module http, mais il pourrait être supprimé dans un module séparé à l'avenir pour étendre Nginx afin de prendre en charge le protocole SPDY.
Classification des modules
Les modules Nginx peuvent essentiellement être divisés en types suivants en fonction de leurs fonctions :
module d'événement : Construit un cadre de mécanisme de traitement d'événements indépendant du système d'exploitation et assure le traitement d'événements spécifiques. Y compris ngx_events_module, ngx_event_core_module et ngx_epoll_module etc. Le module de traitement d'événements spécifique utilisé par Nginx dépend du système d'exploitation spécifique et des options de compilation.
gestionnaire de phase : Ce type de module est aussi directement appelé module gestionnaire. Principalement responsable du traitement des demandes des clients et de la génération du contenu auquel il faut répondre, tel que le module ngx_http_static_module, qui est responsable du traitement des demandes de pages statiques des clients et de la préparation des fichiers disque correspondants pour la sortie du contenu de réponse.
filtre de sortie : est également appelé module de filtre. Il est principalement responsable du traitement du contenu de sortie et peut modifier la sortie. Par exemple, vous pouvez ajouter une barre de pied prédéfinie à toutes les pages HTML de sortie ou remplacer l'URL de l'image de sortie.
upstream : Le module upstream implémente la fonction de proxy inverse, transmet la vraie requête au serveur back-end, lit la réponse du serveur back-end et la renvoie au serveur back-end. client. Le module en amont est un gestionnaire spécial, sauf que le contenu de la réponse n'est pas réellement généré par lui-même, mais est lu à partir du serveur principal.
load-balancer : Le module d'équilibrage de charge implémente un algorithme spécifique et sélectionne un serveur parmi de nombreux serveurs back-end comme serveur de transfert pour une certaine requête.
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!