Heim > Artikel > Betrieb und Instandhaltung > Einführung in die modulare Architektur von Nginx
Modulare Architektur von Nginx
Die interne Struktur von Nginx besteht aus einem Kernteil und einer Serie Es besteht aus Funktionsmodulen. (Empfohlenes Lernen: Nginx-Verwendung)
Durch diese Unterteilung soll die Funktion jedes Moduls relativ einfach, leicht zu entwickeln und auch für die Funktionserweiterung des Systems praktisch sein. Zur Vereinfachung der Beschreibung verwenden wir im Folgenden den Nginx-Kern, um auf die Kernfunktionsteile von Nginx zu verweisen.
Nginx bietet die Grundfunktionen eines Webservers sowie Webdienst-Reverse-Proxy- und E-Mail-Dienst-Reverse-Proxy-Funktionen.
Der Nginx-Kern implementiert das zugrunde liegende Kommunikationsprotokoll, erstellt eine grundlegende Laufzeitumgebung für andere Module und Nginx-Prozesse und bildet eine Basis für die Zusammenarbeit mit anderen Modulen. Darüber hinaus sind in diesen Modulen die meisten protokollbezogenen bzw. anwendungsbezogenen Funktionen implementiert.
Modulübersicht
Nginx organisiert jedes Funktionsmodul in einer Kette. Wenn eine Anfrage eintrifft, durchläuft die Anfrage nacheinander einige oder alle Module in dieser Kette . Jedes Modul implementiert eine bestimmte Funktion.
Zum Beispiel ein Modul, das die Anforderungsdekomprimierung implementiert, ein Modul, das SSI implementiert, ein Modul, das die Kommunikation mit dem Upstream-Server implementiert, und ein Modul, das die Kommunikation mit dem FastCGI-Dienst implementiert.
Es gibt zwei spezielle Module. Sie befinden sich zwischen dem Nginx-Kern und verschiedenen Funktionsmodulen. Diese beiden Module sind das http-Modul und das Mail-Modul.
Diese beiden Module implementieren eine weitere Abstraktionsebene auf dem Nginx-Kern, verarbeiten Ereignisse im Zusammenhang mit dem HTTP-Protokoll und E-Mail-bezogenen Protokollen (SMTP/POP3/IMAP) und stellen sicher, dass diese Ereignisse korrekt verarbeitet werden können. Rufen Sie andere auf Funktionsbausteine nacheinander.
Derzeit ist das HTTP-Protokoll im http-Modul implementiert, es kann jedoch in Zukunft in ein separates Modul zerlegt werden, um Nginx so zu erweitern, dass es das SPDY-Protokoll unterstützt.
Klassifizierung von Modulen
Nginx-Module können grundsätzlich nach ihren Funktionen in folgende Typen unterteilt werden:
Ereignismodul: Erstellt ein Framework für Ereignisverarbeitungsmechanismen unabhängig vom Betriebssystem und ermöglicht die Verarbeitung spezifischer Ereignisse. Einschließlich ngx_events_module, ngx_event_core_module und ngx_epoll_module usw. Das von Nginx verwendete spezifische Ereignisverarbeitungsmodul hängt vom jeweiligen Betriebssystem und den Kompilierungsoptionen ab.
Phasenhandler: Dieser Modultyp wird auch direkt als Handlermodul bezeichnet. Hauptsächlich verantwortlich für die Verarbeitung von Client-Anfragen und die Generierung von Inhalten, auf die geantwortet werden soll, z. B. das Modul ngx_http_static_module, das für die Verarbeitung statischer Client-Seitenanforderungen und die Vorbereitung entsprechender Festplattendateien für die Ausgabe von Antwortinhalten verantwortlich ist.
Ausgabefilter: wird auch als Filtermodul bezeichnet. Es ist hauptsächlich für die Verarbeitung des Ausgabeinhalts verantwortlich und kann die Ausgabe ändern. Sie können beispielsweise allen Ausgabe-HTML-Seiten eine vordefinierte Fußleiste hinzufügen oder die URL des Ausgabebilds ersetzen.
Upstream: Das Upstream-Modul implementiert die Reverse-Proxy-Funktion, leitet die echte Anfrage an den Back-End-Server weiter, liest die Antwort vom Back-End-Server und sendet sie zurück an den Kunde. Das Upstream-Modul ist ein spezieller Handler, mit der Ausnahme, dass der Antwortinhalt nicht selbst generiert, sondern vom Back-End-Server gelesen wird.
Load-Balancer: Das Load-Balancer-Modul implementiert einen bestimmten Algorithmus und wählt einen Server unter vielen Back-End-Servern als Weiterleitungsserver für eine bestimmte Anfrage aus.
Das obige ist der detaillierte Inhalt vonEinführung in die modulare Architektur von Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!