NGINX

High Performance Webserver / Reverse Proxy

Martin Schlüter

4 Minuten

NGINX ist ein sehr schneller Webserver, der auch als Reverse Proxy oder Loadbalancer eingesetzt werden kann. Inzwischen ist NGINX der Webserver mit der höchsten Sichtbarkeit im Internet (34,1%, Stand Juni 2021), gerade bei High Traffic Webseiten (46,9%). Neben der kostenlosen Open Source Version gibt es noch die kommerzielle NGINX Plus Version.

NGINX Einsatzgebiete

Webserver: das klassische Ausliefern von Webseiten und sonstigen Dateien an einen Browser, kann hierbei die Webseiten auch zwischenspeichern (cachen), um z.B. dynamisch erstellte HTML Seiten schneller aus dem Cache auszuliefern. PHP und andere ausführbare Dateien werden als FPM genutzt, also eigene Services an die eine entsprechende Anfrage einfach weitergeleitet wird.

Reverse Proxy: Anfragen von Usern an einen anderen Server weiterleiten, so dass der wirkliche Server nicht direkt für den User erreichbar sein muss. Dies kann der NGINX für Webseiten und auch für andere Dienste, z.B. eMail Server. Auch in Cloud Umgebungen, wie z.B. Kubernetes, ist NGINX oft die Schnittstelle nach aussen.

Load Balancer: Reverse Proxy der die Anfragen auf mehrere Server verteilt, Gründe hierfür sind Lastverteilung und Ausfallsicherheit.

Streaming Server: streamen von Video/ Audio Dateien.

NGINX Verbreitung

Inzwischen ist der NGINX der am meisten sichtbare Webserver, hier die Daten vom Juni 2021, Quelle: W3techs.com

Webseiten TrafficNGINXApacheCloudflare
alle34,1%33,2%18,7%
top 1.000.00034,4%28,6%26,7%
top 100.00038,3%23,5%33,7%
top 10.00044,6%19,2%35,5%
top 1.00046.9 %20,4%28,4%

Die verbleibenden Marktanteile verteilen sich auf die anderen Webserver und andere Loadbalancer.

Man muss hierbei aber auch beachten dass diese Daten jetzt nur aussagen welcher Server sichtbar ist, Cloudflare ist ja u.a. auch ein Reverse Proxy/Caching Anbieter, man kann also nicht sehen auf welchen Webserver die original Seiten jetzt wirklich liegen.

Dass gerade die Webseiten mit hohem Traffic eher auf NGINX gehostet werden, liegt daran dass man für NGINX die Webseite schon auf einem eigenen Server, oder zumindest virtuellen Server, laufen haben muss. Viele kleinere Webseiten aber shared Hostings nutzen, also viele Kunden eines Hostinganbieters die sich einen Server teilen.

Beim NGINX erfolgt die Konfiguration rein in der Konfiguration des Webservers. Der Apache Webserver ermöglicht es z.B. in jedem Verzeichnis eine .htaccess Datei mit abweichenden Konfigurationen abzulegen, die dann ohne Neustart des Webservers auch eingelesen werden.

So sieht man in Shared Hosting Angeboten, also die typischen webspace Angebote, meist den Apache als Webserver, so dass der Kunde selber ein wenig an den Konfigurationen rumschrauben kann. Als Beispiel sei hier ein Url rewrite genannt, also ein umschreiben der schönen URL die der User sieht zu dem scriptnamen und die Parameter für die scriptausführung. Der User sieht example.com/blog/Beitragsname/ , intern wird aber example.com/index.php?section=blog&beitrag=Beitragsname benötigt.

Auch der NGINX kann dies rewrite, aber nur eingeschränkt, und es muss eben in der Hauptkonfiguration des Webservers gemacht werden, und damit es aktiv wird muss der Server zumindest die gesamte Konfiguration neu einlesen. Ich habe auch schon (kommerzielle) PHP Anwendungen gesehen die nur mit dem Apache zu benutzen waren, aber nicht mit dem NGINX.

Wenn man dann in Cloud Umgebungen wie Kubernetes arbeitet kommt man an dem NGINX eigentlich garnicht mehr vorbei, er bildet hier als Reverse Proxy/Load Balancer das Verbindungsglied zum Internet.

Der große Vorteil des NGINX ist eben seine Performance, also die Geschwindigkeit in der er Inhalte ausliefert.

NGINX Plus

Die kommerzielle Variante NGINX Plus hat ein paar extra Features, hauptsächlich für Hochverfügbarkeit und Monitoring, und natürlich qualifizierten Support durch Experten.

Im Bereich Hochverfügbarkeit kann man hier einen aktiven Healthcheck für den Einsatz als Loadbalancer nennen, also prüfen ob die Server auch erreichbar sind, dies nicht erst feststellen wenn sie auf eine Anfrage nicht reagieren. Oder mehrere NGINX die zusammenarbeiten und bei einem Ausfall die verbleibenden die Aufgaben übernehmen.

NGINX Plus liefert über 100 Metriken fürs Monitoring und hat direkt ein eingebautes Dashboard, bei der Open Source Version kommt man nur schwer an aussagekräftige Monitoringdaten wenn es über die Anzahl und Status der Verbindungen hinausgehen soll.

Link: NGINX Webseite

(641 Wörter | 4445 Zeichen)

Martins Meinung

Hier blogge ich über verschiedene Themen.