Allgemein

Was ist nginx?

Von 18. Oktober 2019 Keine Kommentare

Die Webserversoftware NGINX (Engine-X) existiert seit 2004. Entwickelt wurde sie maßgeblich durch den russischen Programmierer Igor Sysoev. NGINX beinhaltet einen Webserver sowie E-Mail Proxy und Reverse Proxy. Das Programm ist Open-Source-Software und unter einer BSD-Lizenz verfügbar. Aufgrund seiner ressourcenschonenden Arbeitsweise eignet sich NGINX hervorragend für Webseiten mit hohen Besucherzahlen und Traffic-Aufkommen. Der Marktanteil der Software ist in den letzten Jahren beträchtlich angestiegen.

NGINX – die Geschichte

NGINX wurde durch Igor Sysoev ursprünglich als eine Antwort auf das C10k-Problem entworfen. Dabei handelt es sich um ein Optimierungsproblem von Netzwerk Sockets, um das Netzwerk in die Lage zu versetzen, eine große Anzahl von Clients parallel zu bearbeiten. C10k ist ein Synonym für 10.000 Verbindungen, die zur gleichen Zeit verarbeitet sollen. Erforderlich ist dafür nicht notwendigerweise maximale Schnelligkeit, sondern ein System, das über die Fähigkeit verfügt, die Verarbeitung dieser Verbindungen in einer festgelegten Zeitspanne effizient zu planen. NGINX wurde als ein Server konzipiert, der durch sehr hohe Performance und geringen Ressourcenverbrauch überzeugt.

Ursprünglich wurde NGINX speziell auf die Anforderungen der russischen Suchmaschine Rambler zugeschnitten und bildet dort auch heute noch eine der zentralen Grundlagen des Webprogrammierung. Laut Angaben der offiziellen Rambler-Webseite wird in Russland und der Ukraine heute die Mehrheit aller existierenden Domains mit NGINX programmiert.

Seit 2011 existiert eine kostenpflichtige Premium-Version der Software, die ihren Verwendern diverse Support- und Sonderfunktionen bietet. Entwickelt und vertrieben wird sie unter dem Namen NGINX Plus auf kommerzieller Basis. Die hierfür neu gegründete Firme Nginx Inc. war von Anfang an interessant für Investoren. Anfang 2019 wurde sie zum Preis von 670 Millionen US-Dollar an das weltweit operierende Digitalunternehmen F5 Networks verkauft, das auf die Entwicklung von Webanwendungs-, Netzwerk- und Sicherheitssoftware spezialisiert ist.

nginx-f5

NGINX – Marktbedeutung

Weltweit liegt NGINX heute nach dem Webserver Apache auf dem zweiten Platz – mit steigender Tendenz. Das Internetunternehmen netcraft liefert anhand einer Umfrage über insgesamt 233 Millionen Domains hierzu aktuelle Zahlen. Demnach hatte Apache im Oktober 2018 einen Marktanteil von 31,5 %, der Marktanteil von NGINX lag bei 26,2 Prozent. Mit Ausnahme von Microsoft spielen andere Webserver demgegenüber nur eine marginale Rolle. Aktuell steigt die Marktbedeutung von NGINX weiter. Anhand des Datenverkehrs auf den weltweit beliebtesten Webseiten zeigt sich der folgende Trend (Status: Juni 2019). NGINX verwenden demnach:

  • 60,9 % der 100.000 beliebtesten Seiten (2018: 56,1 %)
  •  67,1 % der 10.000 beliebtesten Seiten (2018: 63,2 %)
  •  62,1 % der 1.000 beliebtesten Seiten (2018: 57,0 %)

Zu den Anwendern der Software gehören heute einige der weltweit ressourcenintensivsten Seiten wie beispielsweise Netflix oder WordPress.

Funktionsweise und NGINX-Module

NGINX folgt einem modularen Aufbau. Von den einzelnen Modulen werden unterschiedliche Aufgaben übernommen. Die Software kann ist als Webserver, als E-Mail Proxy, als Reverse Proxy sowie als Loadbalancer einsetzbar. Das NAXSI-Modul sorgt optional dafür, dass das Programm auch als leistungsstarke Firewall für Webanwendungen verwendet werden kann. Vom Grundsatz her ist die Funktionsweise von NGINX ereignisgesteuert und asynchron. Hierdurch ist es nicht erforderlich, für jede einzelne Anfrage neue Prozesse zu erzeugen. Die Anzahl der Anfragen beeinflusst folglich kaum die Leistungsfähigkeit der Software. Für die parallele Bearbeitung von mehreren tausend Anfragen sind nur wenig RAM-Speicher und geringe CPU-Kapazitäten nötig. Die Anfragen werden durch das Programm in einem einzigen Thread verarbeitet. Ein Master-Prozess steuert und verwaltet dabei mehrere Worker-Prozesse. Aufgrund der asynchronen Funktionsweise kommt es bei der Ausführung der einzelnen Anfragen/Anforderungen durch den Worker nicht zu Blockaden anderer Prozesse.

Die allgemeinen Funktionen von NGINX umfassen:

  • Anwendungsbeschleunigung
  • Reverse Proxy mit Caching zur Webbeschleunigung
  • E-Mail-Proxy
  • Load Balancing, Entlastung des Hauptservers durch Anfragenumleitungen
  • IPv6 (die aktuellste Version des Internet-Protokolls)
  • Fast CGI mit Caching als Schnittstelle zwischen interaktiven Programmen und dem Server
  • WebSockets
  • Erstellung und Verarbeitung statistischer Dateien
  • Automatische Indizierung
  • Sicherer Datenverkehr durch TLS/SSL-Management mit SNI
  • Bandbreiten-Management, Bereitstellung der optimalen Bandbreite für alle Dienste
  • Leistungsfähiges Videostreaming für MP4- und FLV-Dateien

NGINX wird von allen gängigen Betriebssystemen – Windows, MacOS sowie zahlreichen Linux/Unix-Varianten – unterstützt.

NGINX versus Apache

In der ereignisgesteuerten und asynchronen Arbeitsweise liegt ein wesentlicher Unterschied zwischen NGINX und Apache, das für alle Client-Anfragen einen neuen Thread eröffnen muss. Bei zahlreichen Verbindungen wird unter Apache der Server durch die vielen separaten Prozesse daher stark belastet und seine Leistungsfähigkeit limitiert. NGINX kommt demgegenüber mit wenigen Prozessen aus – jeder Einzelprozess ist in der Lage, tausende von Verbindungen sinnvoll zu verarbeiten und zu halten. Die Software wurde von Anfang unter den Aspekten Effizienz und Geschwindigkeit entwickelt.

Ein weiterer Unterschied zwischen Apache und NGINX besteht in der Verwendung von .htaccess-Dateien, die bei Apache eine wesentliche Rolle spielen, bei NGINX jedoch nicht vorhanden sind. Die Dateien ermöglichen, auf lokaler Basis Regeln zu definieren, die durch den Webserver überprüft und ausgewertet werden. Beispiele dafür sind die Definition von Passwörtern für bestimmte Adressen oder die Umleitung von URLs im Kontext der Suchmaschinenoptimierung. .htacess-Befehle müssen durch einen Konverter in gültige Konfigurationen umgewandelt werden. Über diese Konfigurationen können in Apache-Anwendungen auch nachträglich Module eingebunden und in den Webserver geladen werden.

Von NGINX werden .htaccess-Befehle dagegen wegen ihrer performancelimitierenden Wirkung nicht verwendet oder unterstützt. Einstellungen werden stattdessen systemweit oder pro Webseite definiert. Allerdings ergeben sich aus dieser Architektur Folgen für die jeweils verwendeten Module: Nachträgliche modulare Ergänzungen werden durch diese Software in der Regel nicht unterstützt. Funktionserweiterungen durch die Integration weiterer Module erfordern in der Regel den Austausch der bisher verwendeten Programmversion.

Wenn es ausschließlich um die Leistung von Webservern ginge, hätte NGINX den Apache-Server auf dem Markt möglicherweise seit langem überholt. NGINX ist in der Lage, in einem gegebenen Zeitraum mehr Anfragen zu beantworten und benötigt dafür weniger Speicherplatz und Rechenkapazitäten. Der Grund dafür, dass auch Apache seinen Rang bisher relativ gut behauptet, liegt vor allem in den unterschiedlichen Konfigurationsanforderungen beider Systeme.

Bearbeitung dynamischer Inhalte mit NGINX

Anders als Apache ist NGINX nicht in der Lage, dynamische Inhalte wie beispielsweise PHP-Anfragen eigenständige zu verarbeiten. Der Server nimmt diese Anfragen lediglich entgegen und leitet sie an einen separaten Prozess – einen sogenannten PHP-Interpreter – weiter. Verwendung findet hierfür beispielsweise der Fast CGI Process Manager (PHP-FPM). Der Interpreter bearbeitet die Anfrage und spielt sie an das System zurück. Dieses Konzept erfordert zunächst einen höheren Konfigurationsaufwand als Apache, trägt jedoch ebenfalls dazu bei, die Gesamtbelastung des Servers und damit seine Performance zu erhöhen.

Wichtig ist die PHP-Konversion durch NGINX insbesondere im Hinblick auf gängige Content-Management-Systeme (CMS) und Onlineshop-Systeme. Diese arbeiten fast immer mit dynamischen PHP-Inhalten, lassen sich aufgrund der Konversions-Funktionen jedoch auch unter NGINX problemlos und ohne Funktions- oder Performanceeinschränkungen betreiben. Möglicherweise muss hierfür eine Anpassung ihrer Konfigurationseinstellungen vorgenommen werden. Webhoster bieten ihre Kunden hierfür beispielsweise spezielle Administrationssoftware oder .htaccess-Konverter an. Zudem hat sich NGINX auch in dieser Hinsicht den Anforderungen seiner Nutzer angepasst. Für die gängigen CMS (Joomla, WordPress, TYPO3, Drupal) und Onlineshop-Systeme (Magento, PrestaShop, Shopware) gibt es vorgefertigte NGINX-Konfigurationen, die sich mit wenigen Mausklicks aktivieren lassen.

NGINX und Apache als kombinierter Server

Die beiden Webserver-Programme lassen sich auch im Rahmen eines kombinierten Servers nutzen. NGINX übernimmt dabei die Rolle einer primären Instanz. Spezielle Anfragen werden an Apache weitergeleitet, um sie optimal zu bearbeiten, ohne die Kapazitäten des Systems zu überlasten. Auch aus diesem Vorgehen können erhebliche Optimierungen des Ressourcenverbrauchs und damit Performance-Steigerungen resultieren. Die Kombination erfordert individuelle Softwarekonfigurationen sowie die Vergabe spezieller Administrationsrechte auf dem Server.

Vorteile von NGINX

Wenn für ein Webprojekt eine freie Auswahl der eingesetzten Software möglich ist, spricht die höhere Performance von NGINX recht eindeutig dafür, sich für dieses System zu entscheiden. Besonders gut geeignet ist das Programm für physikalische Server, deren Hardware-Kapazitäten limitiert sind und die daher auf einen geringen Ressourcenverbrauch angewiesen sind. Seine Stärken spielt NGINX jedoch auch im Cloud-Computing aus. Das Programm unterstützt auch in der Cloud besonders schlanke und daher auch kostengünstige Server.

Die wichtigsten Vorteile von NGINX bestehen in den folgenden Punkten:

  • Schlanke Programmierung und schlanke Serverarchitektur
  • Geringer Bedarf an RAM-Speicher
  • Geringe CPU-Belastung
  • Ereignisgesteuerte und asynchrone Arbeitsweise
  • Performante Bearbeitung zahlreicher gleichzeitiger Anfragen
  • Kurze Ladezeiten auch bei stark frequentierten und somit hoch belasteten Webseiten
  • Verbesserung des Suchmaschinen-Rankings und damit der Konversionsraten durch die verkürzten Ladezeiten
  • Performance-Optimierung durch die Auslagerung der Verarbeitung dynamischer Inhalte in einen Hilfsprozess
  • Optimale Abstimmung auf schnelle SSD-Speichertechnik
  • Gute Eignung für datenbankbasierte Webanwendungen
  • Anforderungsgerechte Konfiguration und Erfüllung von Zusatzaufgaben durch zahlreiche verfügbare Module
  • Unterstützung aller gängigen CMS und Onlineshop-Systeme
  • Verfügbarkeit einer kommerziellen Programmversion mit Supportleistungen und zusätzlichen Funktionalitäten

Nachteile von NGINX

Den zahlreichen Vorteilen des Programms stehen allerdings auch einige Nachteile gegenüber. Hierzu gehören insbesondere die folgenden Limitationen:

  • Zugriffsrechte, Umleitungen und Re-Writes lassen sich nicht durch .htaccess-Befehle definieren
  • Für die Verarbeitung dynamischer Inhalte ist zusätzliche Software nötig
  • Wenn die globale Konfiguration des Programms verändert wird, muss der Server neu geladen werden. Fehler können hierbei die gesamte Serverinstanz betreffen
  • Im Vergleich zu Apache erfordert das Programm insgesamt etwas höheren manuellen Konfigurationsaufwand
rackserver-nginx-2

Auf sehr vielen Webservern wird nginx als Webserver oder Proxy Server verwendet

Was leistet NGINX Plus?

Die kostenpflichtige Premium-Version von NGINX bietet neben Support und verschiedenen Zusatzfunktionen auch einen gemanagten Release-Prozess, der auf die Bedürfnisse des individuellen Nutzers zugeschnitten ist. Die neue Eignerin F5 Networks schreibt dazu auf ihrer Firmenwebseite, dass die Übernahme der Nginx Inc. die Grundlage dafür schaffen soll, Anwendungsdienste vom Code bis zum Kunden anzubieten und im Rahmen eines Multi-Cloud-Anwendungsportfolios die Kluft zwischen Entwicklung und Betrieb zu überbrücken. Grundanforderungen an solche Dienste sind Skalierbarkeit, Leistungsfähigkeit und Sicherheit.

F5 Networks stellt NGINX Plus auch in Zukunft kommerziellen Anwendern für ihre Webprojekte zur Verfügung. Diese können neben den Open-Source-Funktionalitäten des Programms unter anderem die folgenden Features nutzen:

  • Live Activity Monitoring und andere Monitoring-Funktionen
  • Management-Funktionen
  • Dynamische Rekonfigurationen ohne erneuten Server-Upload
  • Cache-purging API
  • DNS Service Discovery Integration
  • MP4-Bandbreitenmanagement und -kontrolle

Wo gibt es nginx?

In allen Webhosting Paketen ist nginx bereits enthalten und kann auch ohne den Apache Webserver verwendet werden.

Zu den Webhosting Angeboten