Was ist Nginx?
Lange Zeit war Apache mit einem Marktanteil von bis zu 70 Prozent der Webserver für das Internet. Einzig Microsoft IIS stellte mit etwa 20 Prozent eine nennenswerte Konkurrenz dar, da es der Standard für das Betriebssystem Windows Server ist. Mit dem Erscheinen von Nginx – ausgesprochen wie das englische Engine Ex – hat sich die Situation geändert. Besonders große Plattformen setzen auf die Open-Source-Software aus Russland, da diese viele Vorteile mit sich bringt.
Webserver, Datenbanken, Programmiersprachen, Protokolle und Interpreter
Eine Webseite ist heute fast immer dynamisch programmiert. Das bedeutet, bei einer Anfrage erstellen mehrere Programme eine individuelle Antwort, statt ein vorgefertigtes, statisches Dokument auszuliefern. Die Informationen – zum Beispiel Texte, Links, Nutzernamen oder Passwörter – liegen in einer Datenbank. Skripte in einer geeigneten Programmiersprache wie PHP, Perl oder Python fragen diese ab und erstellen die Webseite.
Der Interpreter bildet eine Schnittstelle zwischen dem Skript und dem Betriebssystem – er übersetzt die geschriebenen Befehle in Computersprache. Der Webserver ist für die Kommunikation zuständig: Er nimmt Anfragen entgegen und sendet Antworten an die entsprechenden Adressen.
Um die Kommunikation zwischen Server und unterschiedlichen Endgeräten und Betriebssystemen zu ermöglichen, kommen universelle Protokolle als Gemeinsprache zum Einsatz. Für Webseiten ist dies das Hypertext Transfer Protocol (HTTP) beziehungsweise dessen verschlüsselte Variante mit dem Zusatz Secure (HTTPS). Es ist speziell für die Übertragung von Nachrichten konzipiert, für andere Zwecke wie Dateiübertragungen existieren eigene Formate wie das File Transfer Protocol (FTP).
Nginx – ein modularer Webserver mit geringem Ressourcenverbrauch
Um eine hohe Performance und Funktionalität zu ermöglichen, verwendet Nginx ein modulares Design. Es besteht aus einem schlanken Kernprogramm, das ein Nutzer je nach individuellen Anforderungen durch Module erweitert. Dadurch unterstützt der Webserver unterschiedliche Techniken und erlaubt die Einbindung neuer Standards etwa für Videostreaming und interaktive Inhalte. Einige der Möglichkeiten sind Lastverteilung über mehrere Server, zusätzliche Protokolle, direkter Zugriff auf den Arbeitsspeicher oder der Einsatz als E-Mail– oder Webserver für Weiterleitung (Proxy).
Eines der populärsten und interessantesten Module ist PHP-FPM. Es handelt sich um einen Prozessmanager, der die Anbindung an den PHP-Interpreter übernimmt. Die Kommunikation zwischen Webserver und Programmiersprache basiert auf einem 1993 definierten Standard – dem Common Gateway Interface (CGI). Traditionell erstellt dieses für jede Aufgabe einen neuen Prozess.
Im Unterschied zu diesem Verfahren erzeugt PHP-FPM bei Betriebsstart mehrere Interpreter im Hintergrund, auf die es je nach Auslastung Anfragen verteilt. In Verbindung mit anderen Optimierungen erreicht das Modul dadurch eine ausgezeichnete Performance.
Unterschiede zwischen Apache und Nginx
Anders als Apache legt Nginx bereits seit seiner ersten Version eine Priorität auf Effizienz und Geschwindigkeit. Apache verwendet ebenfalls ein modulares Design – eines seiner größten Nachteile ist jedoch, dass es jede Verbindung einzeln bearbeitet. Dadurch besitzt es einen sehr hohen Speicherverbrauch und die Effizienz sinkt bei hohen Besucherzahlen kontinuierlich. Aus diesem Grund setzt das Programm auf eine sogenannte „asynchrone Architektur“. Anfragen behandelt es nicht individuell, sondern bündelt sie in wenigen Prozessen, die tausende Verbindungen simultan verwalten können.
Eine häufig genutzte Funktion unter Apache sind .htaccess-Dateien. Diese ermöglichen es, durch eine lokale Datei Regeln zu definieren, die von dem Webserver ausgewertet werden. Häufige Verwendungen sind das Setzen eines Passworts für eine bestimmte Adresse oder die Umleitung von URLs im Rahmen der Suchmaschinenoptimierung (SEO). Nginx unterstützt keine .htaccess-Dateien, da diese die Performance beeinträchtigen. Es verwendet stattdessen globale – also system– oder seitenweite Einstellungen.
Für die Umwandlung von .htaccess-Befehlen in eine gültige Konfiguration existieren mehrere Konverter, die die Einrichtung erleichtern. Apache ermöglicht es, Module nachträglich einzubinden, indem Anwender diese in die Konfiguration eintragen und in den Webserver laden. Im Gegensatz dazu gehören Module bei Nginx fest zu dem kompilierten Programm. Eine Erweiterung um neue Funktionen erfordert deshalb fast immer den Austausch der installierten Programmversion.
Vor- und Nachteile von Nginx
Das Projekt Nginx entstand aus der Notwendigkeit, einen schnellen, zuverlässigen, sicheren und effizienten Webserver für die russische Suchmaschine Rambler zu entwickeln. Unter dem Gesichtspunkt der Performance ist dieser wegen dieser Eigenschaften meist die beste Wahl. Populäre Webseiten mit tausenden oder Millionen Aufrufen täglich – darunter zum Beispiel WordPress, Netflix, Apple, Spotify oder Facebook – setzen deshalb bevorzugt Nginx ein. Experten schätzen, dass der Marktanteil des Webservers unter den 10.000 beliebtesten Internetseiten bei über 60 Prozent liegt.
Für kleine Projekte bietet die Verwendung ebenfalls einige Vorteile. Er ermöglicht beispielsweise eine Reduzierung der Hardwareperformance und dadurch der Betriebskosten, ohne die Geschwindigkeit bei Reaktion oder Seitenaufbau zu beeinträchtigen. Ein großer Nachteil von Nginx ist die gegenüber Apache aufwendigere Konfiguration. Darüber hinaus schränkt dieser durch die ausschließlich globale Definition die Möglichkeiten zu einer individuellen Einrichtung bei mehreren unabhängigen Nutzern ein. Wegen dieser Eigenschaft bevorzugen viele Anbieter von Webspace für ihre Kunden nach wie vor Apache.
Apache und Nginx als kombinierter Webserver
Um die Vorteile von beiden Programmen nutzen zu können, bietet sich eine Kombination der Webserver an. In diesem Fall dient Nginx als primäre Instanz und leitet ausschließlich spezielle Anfragen an Apache weiter, um dessen Verbindungen zu minimieren. Das Verfahren benötigt Administrationsrechte auf dem Server und eine individuelle Konfiguration, kann aber den Ressourcenverbrauch erheblich verringern. Das Aufsetzen der Webserver erfordert allerdings ein entsprechendes Fachwissen.
- Über den Autor
- Aktuelle Beiträge
Claudia ist Content-Redakeurin und schreibt im Blog von Biteno.com über technische und betriebswirtschaftliche Themen.