Die Verarbeitung von HTTP-Anfragen durch Nginx ist die wichtigste Funktion von Nginx und auch der komplexeste Teil. Sie können grob über den Ausführungsprozess sprechen:
Lesen des Anforderungsheaders
Anfragezeile analysieren ;
Anfragekopf analysieren;
Anfragetext lesen
Am meisten beginnen Wichtiger Teil: Das heißt, die mehrstufige Verarbeitung. Nginx unterteilt die Anforderungsverarbeitung in 11 Stufen. Dies bedeutet, dass Nginx die Anforderung in die Struktur ngx_http_request_t einkapselt, nachdem sie die Anforderungszeile und den Anforderungsheader gelesen hat auf diesem ngx_http_request_t, Verarbeiten Sie die Anfrage, z. B. Umschreiben von URI, Berechtigungskontrolle, Pfadsuche, Generieren von Inhalten und Protokollierung usw.
Geben Sie das Ergebnis an den Client zurück 🎜>Die Hauptfunktion der Funktion ngx_http_process_request_line besteht darin, die Anforderungszeile zu analysieren. Da es sich um Netzwerk-E/A-Vorgänge handelt, kann es sein, dass selbst eine kurze Anforderungszeile nicht sofort gelesen wird. Dies gilt in der vorherigen Funktion ngx_http_init_request für die Funktion ngx_http_process_request_line Die Leseereignisverarbeitungsfunktion verfügt nur über einen eindeutigen Parameter vom Typ ngx_event_t *. Zu Beginn der Funktion muss auch festgestellt werden, ob es sich um ein Timeout-Ereignis handelt. Wenn ja, schließen Sie die Anforderung und starten Sie die Verbindung normaler Parsing-Prozess. Rufen Sie zunächst die Funktion ngx_http_read_request_header auf, um die Daten zu lesen.
Die mehrstufige Verarbeitung ist der wichtigste Teil des Nginx-Moduls, da hier auch Module von Drittanbietern registriert sind
Zum Beispiel hat jemand einen Drittanbieter geschrieben, der verwendet wird Nginx und Memcache für Seiten-Caching-Module, Sie können Memcache auch durch Redis-Cluster usw. ersetzen.
Darüber hinaus ähnelt die mehrstufige Verarbeitung von Nginx in gewisser Weise der Middleware von Python- und Golang-Web-Frameworks Der Dekoratormodus für die Kapselung von Ebenen, während Nginx ein Array (verknüpfte Liste) verwendet, um mehrstufige Handler zu kombinieren, und diese dann gemäß der vom Handler gesendeten verknüpften Liste ausführt Der Client entspricht einem bestimmten Pfad auf dem Server. Für Ressourcen muss der Webserver lediglich die URL dem Pfad des lokalen Dateisystems zuordnen, dann die entsprechende Datei lesen und an den Client zurückgeben. Dies war jedoch nur die Anforderung des ursprünglichen Internets. Heutzutage stellt das Internet eine Vielzahl komplexer Anforderungen und erfordert, dass Webserver Probleme wie Sicherheit und Berechtigungskontrolle, Multimedia-Inhalte und dynamische Webseiten bewältigen. Diese komplexen Anforderungen haben dazu geführt, dass der Webserver kein kurzes Programm mehr ist, sondern ein System, das sorgfältig entworfen und modularisiert werden muss.
Die gute Modularität von Nginx spiegelt sich in der mehrstufigen Aufteilung des Anfrageverarbeitungsprozesses wider. Der mehrstufige Verarbeitungsprozess ist wie ein Fließband. Ein Nginx-Prozess kann mehrere Anfragen gleichzeitig in verschiedenen Phasen verarbeiten. Mit Nginx können Entwickler Module in jeder Phase des Verarbeitungsprozesses registrieren. Während der Startphase organisiert Nginx alle in jeder Phase registrierten Modulverarbeitungsfunktionen der Reihe nach in einer Ausführungskette.
Weitere technische Artikel zum Thema Nginx finden Sie in der Spalte
Tutorials zur Nginx-Nutzung, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonWie Nginx HTTP-Anfragen verarbeitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!