Nebenläufigkeit und schnellere Ladezeiten waren schon immer eine Herausforderung für jede Website mit viel Verkehr. Um Sites schneller zu laden, öffnen Browser mehrere Verbindungen zu einem Webserver, um Inhalte parallel zu laden. In Kombination mit dauerhaften Verbindungen muss der Webserver wirklich robust sein und sich mit der Anzahl der Anforderungen nicht linear skalieren lassen.
Es ist sehr wichtig, dass die Website auf einer Reihe von lose gekoppelten, aber sehr zusammenhängenden Bausteinen basiert, und Nginx ist wirklich ein wichtiges Element, um dies zu erreichen.
Nginx (ausgesprochen Engine x) ist ein leichter, kostenloser Open-Source-HTTP- und Reverse-Proxy-Server sowie ein Mail-Proxy-Server.
Nginx kann als vollständiger Ersatz für andere HTTP-Server wie Apache verwendet werden oder kann auch vor Ihrer vorhandenen Infrastruktur stehen, um als Reverse-Proxy zu arbeiten.
Die Verwendung eines Reverse-Proxy ist sehr wichtig, da er Folgendes unterstützt:
Wie unterscheidet sich Nginx von Apache? Nginx ist ereignisbasiert und asynchron, während Apache vollständig von Threads abhängig ist. Auf einem Webserver mit relativ hohem Datenaufkommen wird der Speicher für Threads wahrscheinlich erschöpft. Ein Ereignis, das auf einem asynchronen und nicht blockierenden Modell (von nginx) basiert, ist in diesem Fall ein offensichtlicher Gewinner.
Es hat einen einzigen Master-Prozess und mehrere Worker-Prozesse laufen unter einem nicht privilegierten Benutzer. Innerhalb jedes Arbeiters kann nginx mehrere tausend Verbindungen verarbeiten.
Quelle: Die Architektur von Open Source-AnwendungenDer Nginx Arbeitnehmer
Code enthält den Kern und die Funktionsmodule. Dank der modularen Architektur von Nginx können Sie die Webserver-Funktionen erweitern, ohne den Kern zu verändern. Module lesen und schreiben in das Netzwerk und in den Speicher, wandeln Inhalte um, leiten die Anforderungen an Ursprungsserver weiter, umfassen serverseitige Aktionen und andere Dinge. Module bilden hauptsächlich die Anwendungsschicht und die Präsentationsfunktionalität.
Nginx-Module gibt es in verschiedenen Formen: Kernmodule, Ereignismodule, Phasenhandler, Protokolle, Variablenhandler, Filter, Upstreams und Lastverteiler. Momentan unterstützt nginx keine dynamisch geladenen Module. Daher müssen Module während des Builds zusammen mit dem Core kompiliert werden.
Nginx verarbeitet Verbindungen als miteinander paspelierte Module als Kette. Für jede Operation gibt es ein Modul, das die relevante Arbeit erledigt, z. Komprimieren, Ändern von Inhalten, Ausführen von serverseitigen Includes und Kommunizieren mit den Upstream-Anwendungsservern. Ein typischer HTTP-Anforderungsverarbeitungszyklus sieht wie folgt aus:
Dieser geschichtete und locker gekoppelte, aber höchst zusammenhängende Ansatz macht es wirklich gut, was er tut.
Download und Installation
Die Nginx-Konfiguration befindet sich in Textdateien, normalerweise um / usr / local / etc / nginx
oder / etc / nginx
. Die Hauptkonfigurationsdatei wird aufgerufen nginx.conf
. Die Nginx-Konfigurationsdatei ist im Wesentlichen eine Liste von Anweisungen, die in einer logischen Struktur angeordnet sind. Das gesamte Verhalten der Anwendung wird durch die Werte definiert, die Sie diesen Anweisungen geben.
#Benutzer niemand; Arbeiter_Prozesse 1; #error_log logs / error.log; #error_log logs / error.log notice; #error_log logs / error.log info; #pid logs / nginx.pid; Ereignisse worker_connections 1024; http …
Oben sehen Sie einen kleinen Ausschnitt eines Standard-Nginx-Conf (kommentiert mit Erläuterung). Die gesamte Datei kann auch unter gefunden werden /usr/local/etc/nginx/nginx.conf.default
. Der Kern versucht, jede Richtlinie ausführlich zu erklären.
In diesem Artikel wurde erläutert, was Nginx ist und welche wichtige Rolle es spielt, um Websites schneller zu machen. Es berührte auch die Anweisungen in der Konfigurationsdatei. Im zweiten Teil des Artikels werden einige Rezepte für die Verwendung von Nginx in verschiedenen Kontexten sowie für die Verwendung von Nginx-Modulen erläutert.