NGINX – der schnelle und ressourcenschonende Webserver

Laut W3Techs-Statistik ist Apache auch im Jahr 2016 noch der meistgenutzte Webserver – insgesamt über 50 Prozent aller Webseitenbetreiber nutzen ihn. Betrachtet man allerdings nicht die Gesamtheit aller Websites, sondern nur die Top 10.000 der meistbesuchten Websites, zeigt sich ein anderes Bild: Nur knapp 30 Prozent dieser Seiten basieren auf dem erstmals 1995 publizierten Server-Urgestein. Von den führenden 1.000 Websites sind es sogar nur rund 27 Prozent.

Das ist zum einen auf den unverhältnismäßig hohen Anteil des Google Web Servers (rund 10 Prozent) bei den stark besuchten Websites zurückzuführen, denn auf ihm laufen sämtliche Google-Webseiten. Zum anderen hängt dieses Ergebnis aber auch mit dem rasanten Aufstieg der aus Russland stammenden Webserver-Software NGINX zusammen. War sie im Jahr 2010 mit knapp 4 Prozent Marktanteil nicht mehr als eine der zahlreichen Apache-Alternativen, ist die unter der BSD-Lizenz veröffentlichte Software heute bereits bei jedem zweiten Webprojekt der Top 10.000 bzw. 1.000 im Einsatz.

Was ist NGINX?

Die Programmierung der 2004 veröffentlichten NGINX-Server-Software trieb in erster Linie der russische Softwareentwickler Igor Sysoev voran. Damals wie heute lag der Fokus darauf, einen Server zu entwickeln, der sich durch außerordentlich hohe Performance auszeichnet und eine möglichst große Anzahl an Clients gleichzeitig bedienen kann, dabei aber auch durch einen geringen Ressourcenverbrauch überzeugt. Angesichts der wachsenden Beliebtheit und Verbreitung des Webservers gründete Sysoev 2011 NGINX Inc. Das kommerzielle Unternehmen ist seitdem für die Weiterentwicklung der Software zuständig und bietet – neben der weiterhin freien Standardversion – mit NGINX Plus auch kostenpflichtigen Support und Zusatzfeatures wie verbessertes Load Balancing an.

NGINX ist wie Apache modular aufgebaut. Das heißt, dass die verschiedenen Funktionen über entsprechende Module bereitgestellt werden, die Sie als Administrator aktivieren oder deaktivieren können. Dadurch verfügen Sie beispielsweise über die folgenden Features:

  • Application Acceleration (Anwendungsbeschleunigung) ermöglicht die schnelle Auslieferung von Inhalten.
  • Reverse Proxying erlaubt es, NGINX als Reverse Proxy (HTTP, TCP, UDP) zur Webbeschleunigung oder als E-Mail-Proxy (IMAP, POP3, SMTP) zu nutzen.
  • Bandbreitenmanagement stellt allen Diensten die optimale Bandbreite zur Verfügung.
  • Load Balancing entlastet den Hauptserver durch Umleitung der Anfragen.
  • Videostreaming, das hohe Leistungsfähigkeit beim Streaming von MP4- und FLV-Medien bietet.

Während Apache für jede Client-Anfrage einen neuen Thread oder Prozess öffnet, arbeitet der NGINX-Server ereignisorientiert. Somit kann er die Anfragen asynchron bearbeiten, was Arbeitsspeicher und Zeit spart. Die Server-Software wird von einer Vielzahl von Betriebssystemen unterstützt, unter anderem von zahlreichen Unix-/Linux-Varianten inklusive Mac OS sowie von Windows-Servern.

NGINX installieren und konfigurieren

Nutzer der Plus-Edition erhalten bei der Installation der Software Unterstützung durch den NGINX-Support. Generell verläuft die Installation allerdings nach dem altbekannten Mustern unter Nutzung des Paketmanagers, denn die meisten Linux-Distributionen haben das NGINX-Paket standardmäßig in ihrem Repository. Sollte das Paket fehlen, kann der Quellcode jedoch schnell und einfach von der offiziellen Homepage des NGINX-Projektes heruntergeladen werden. Im Folgenden zeigen wir Ihnen beispielhaft, wie Sie den Webserver unter Linux installieren und konfigurieren:

1. Mit folgendem Befehl aktualisieren Sie zunächst den Paketmanager, damit Ihr System bei der anschließenden Installation (die durch die zweite Codezeile gestartet wird) auf die neueste Version des NGINX-Paketes zurückgreift:

sudo apt-get update
sudo apt-get install nginx

2. NGINX startet in der Regel direkt im Anschluss. Um zu überprüfen, ob die Software tatsächlich ordnungsgemäß funktioniert, rufen Sie einfach die NGINX-Landingpage über den Domainnamen des Servers oder die öffentliche IP-Adresse in Ihrem Browser auf. Bei erfolgreicher Installation sehen Sie folgende Nachricht:

3. Alles, was zur NGINX-Konfiguration erforderlich ist, finden Sie im Verzeichnis /etc/nginx – unter anderem die zentrale Konfigurationsdatei nginx.conf. Wann immer Sie Änderungen an dieser Datei vornehmen, ist es notwendig, den Server mit einem der beiden folgenden Befehle neu zu starten, damit diese übernommen werden:

sudo service nginx reload
sudo service nginx restart

Mit den Parametern stop bzw. start können Sie den Dienst auch komplett aus- bzw. wieder anschalten.

4. Die Syntax der Konfigurationsdatei hat folgende Merkmale:

  • Einstellungen: Alle Einstellungen beginnen mit dem jeweiligen Variablennamen. Per Leerzeichen getrennt schließen sich ein oder mehrere Argumente an, an deren Ende immer ein Semikolon steht.
worker_connections 768;
  • übergeordnete Einstellungen: Einige Einstellungen, wie die events-Variable, beinhalten Argumente, die ihrerseits Einstellungen mit eigenen Argumenten darstellen. Diese Sub-Direktiven erhalten geschweifte Klammern ({}).
events {
  worker_connections 768;
  multi_accept on;
}

  • Hash-Zeichen (#): Direktiven (Anweisungen), die deaktiviert sind, werden durch ein Hash-Zeichen auskommentiert. Indem Sie das Zeichen entfernen, aktivieren Sie die jeweilige Server-Einstellung. Im Fall von
# multi_accept on;

ist beispielsweise die Option deaktiviert, mehrere Clients zur gleichen Zeit zu akzeptieren.

  • Tabstopps und mehrere Leerzeichen: NGINX interpretiert gesetzte Tabs und mehrfach gesetzte Leerzeichen als ein einziges Leerzeichen. Wenn Sie NGINX konfigurieren, können Sie sich dies zunutze machen und so für eine ordentliche und gut lesbare Struktur der Konfigurationsdatei sorgen.

5. Weitere Informationen über die einzelnen Module sowie NGINX-Tutorials zur Einrichtung von Web- oder Proxyservern auf Basis der Server-Software finden Sie in der offiziellen, englischsprachigen Dokumentation.

Das macht NGINX als Webserver-Software so beliebt

Dass die Beliebtheit von NGINX zunehmend steigt, hat mehrere Gründe. Zunächst wäre da die Tatsache zu nennen, dass die Webserver-Software optimal auf die derzeitigen Anforderungen vieler Webprojekte abgestimmt ist. Denn NGINX erzielt nicht nur erstklassige Ergebnisse bei der Verarbeitung einer großen Zahl von Client-Anfragen, sondern geht dabei auch überaus ressourcenschonend vor. Damit liefert die Software die perfekte Antwort auf die eingeschränkte Leistung mobiler Datenverbindungen. NGINX unterstützt Sie als Website-Betreiber somit dabei, Ihre Inhalte auch Nutzern mobiler Geräte möglichst schnell auszuliefern. Ferner überzeugt das Open-Source-Produkt des russischen Entwicklerteams durch seine flexiblen Einsatzmöglichkeiten. Zusätzlich zu der klassischen HTTP-Webserver-Variante macht NGINX auch in Sachen Reverse-Proxying, beispielsweise als E-Mail-Proxy-Server oder Load Balancer, eine gute Figur.

NGINX ist aber nicht immer die beste Webserver-Wahl: Shared Hosting, bei dem die Kontrolle über Server-Ressourcen mithilfe passwortgeschützter Bereiche oder interner Umleitungen geregelt wird, ist damit nur schwer zu realisieren. Solche Sektionen und Rewrites können nur in der zentralen Konfigurationsdatei angelegt und per Server-Neustart umgesetzt werden. Entsprechend wirken sich dann mögliche Fehler auf alle Teilnehmer der Shared-Hosting-Instanz aus. In diesem Bereich bietet der Apache-Webserver, bei dem individuelle Einstellungen in separaten .htaccess-Dateien festgehalten werden, also einen deutlichen Vorteil.

FAQs

Nachfolgend haben wir die wichtigsten Fragen und Antworten zum Thema nochmals für Sie zusammengefasst.

Was ist NGINX?

NGINX ist eine modular aufgebaute Server-Software. Bei der Entwicklung der Software lag der Fokus vor allem auf hoher Performance, um eine möglichst große Anzahl an Clients gleichzeitig bedienen zu können und einen gleichzeitig möglichst geringen Ressourcenverbrauch.

Welche Features bietet NGINX?

Einige der in den Modulen von NGINX enthaltenen Features sind:

  • Application Acceleration
  • Reverse Proxying
  • TLS-Verschlüsselung
  • Bandbreitenmanagement
  • Load Balancing
  • Videostreaming

Was ist der Unterschied zwischen NGINX und Apache?

Apache öffnet für jede Client-Anfrage einen neuen Thread oder Prozess. Der NGINX-Server arbeitet hingegen ereignisorientiert und kann Anfragen daher asynchron bearbeiten, was Arbeitsspeicher und Zeit spart.

Was sind die Vorteile von NGINX?

NGINX erzielt erstklassige Ergebnisse bei der Verarbeitung einer großen Zahl von Client-Anfragen und geht dabei überaus ressourcenschonend vor. Damit liefert die Software die perfekte Antwort auf die eingeschränkte Leistung mobiler Datenverbindungen. Darüber hinaus bietet das Open-Source-Produkt sehr flexible Einsatzmöglichkeiten.