Definition
Nginx ist ein Open-Source-Webserver und Reverse-Proxy-Server, der für seine hohe Leistung und Effizienz bekannt ist. Es wurde entwickelt, um eine große Anzahl gleichzeitiger Verbindungen mit geringem Ressourcenverbrauch zu verarbeiten. Neben der Bereitstellung von statischen Dateien unterstützt Nginx auch Funktionen wie Load Balancing, HTTP-Caching und TLS-Terminierung.
Der Name Nginx wird als „Engine X“ ausgesprochen und dient häufig als Alternative oder Ergänzung zu klassischen Webservern wie Apache HTTP Server. Es ist in der Programmiersprache C geschrieben und zeichnet sich durch ein ereignisgesteuertes, asynchrones Architekturmodell aus, das eine hohe Skalierbarkeit ermöglicht.
Was bedeutet das für Ihr Unternehmen?
Nginx arbeitet bei vielen Websites unsichtbar im Hintergrund und entscheidet mit, wie schnell Seiten ausgeliefert werden und wie gut der Server Lastspitzen verkraftet. Ein großer Teil der Ladezeit hängt an Einstellungen wie Komprimierung, Caching-Regeln für Bilder und Skripte sowie aktuellen TLS-Einstellungen. Bei einem Umzug oder Relaunch sollten auch Weiterleitungen alter Adressen in der Nginx-Konfiguration geprüft werden, sonst gehen Besucher und Suchmaschinen-Rankings verloren.
Geschichte und Entwicklung
Nginx wurde ursprünglich 2002 von Igor Sysoev entwickelt, einem russischen Softwareentwickler, der eine Lösung für das Problem der C10k-Herausforderung suchte, also die effiziente Verarbeitung von zehntausend gleichzeitigen Verbindungen. Die erste öffentliche Version erschien 2004.
Seitdem hat sich Nginx zu einem der populärsten Webserver weltweit entwickelt und wird von zahlreichen großen Webseiten und Diensten eingesetzt. Im Jahr 2011 wurde die Firma Nginx, Inc. gegründet, die kommerzielle Produkte und Support anbietet. 2019 wurde Nginx von F5 Networks übernommen, was die weitere Entwicklung und Integration in Unternehmenslösungen fördert.
Funktionsweise und Architektur
Nginx verwendet ein ereignisgesteuertes, nicht-blockierendes Modell, das es ermöglicht, viele Verbindungen gleichzeitig zu verwalten, ohne für jede Verbindung einen eigenen Thread oder Prozess zu benötigen. Dieses Modell unterscheidet sich von traditionellen, thread- oder prozessbasierten Webservern und ist besonders effizient bei der Verarbeitung von statischen Inhalten und Proxy-Anfragen.
Als Reverse Proxy kann Nginx TLS-Verbindungen terminieren, Anfragen an Backend-Server wie PHP-FPM oder Node.js weiterleiten und dabei Load Balancing durchführen. Es unterstützt verschiedene Protokolle, darunter HTTP, HTTPS, SMTP, POP3 und IMAP, und bietet flexible Konfigurationsmöglichkeiten über eine textbasierte Konfigurationsdatei.
Einsatzgebiete
Nginx wird vor allem als Webserver für die Auslieferung von Webseiten und Webanwendungen eingesetzt. Dabei übernimmt es häufig die Aufgabe, statische Dateien wie HTML, CSS, JavaScript oder Bilder direkt zu bedienen, was die Performance verbessert und Backend-Server entlastet.
Darüber hinaus wird Nginx als Reverse Proxy und Load Balancer genutzt, um Anfragen auf mehrere Backend-Server zu verteilen und so die Skalierbarkeit und Verfügbarkeit von Anwendungen zu erhöhen. Auch die TLS-Terminierung und das Caching von Inhalten sind typische Anwendungsfälle in Unternehmensumgebungen und bei Content Delivery Networks (CDNs).
Abgrenzung zu anderen Webservern
Im Vergleich zu Apache HTTP Server, einem der ältesten und weitverbreitetsten Webserver, zeichnet sich Nginx durch seine eventbasierte Architektur aus, die eine bessere Skalierbarkeit bei hoher Last ermöglicht. Apache verwendet hingegen ein thread- oder prozessbasiertes Modell, das in manchen Szenarien mehr Ressourcen verbraucht.
Andere Webserver wie Microsoft IIS oder LiteSpeed bieten ebenfalls Webserver-Funktionalitäten, unterscheiden sich jedoch in der Plattformunterstützung, Lizenzierung und spezifischen Features. Nginx wird häufig zusammen mit Apache eingesetzt, wobei Nginx als Reverse Proxy vor Apache geschaltet wird, um die Vorteile beider Systeme zu kombinieren.