Was ist Nginx und was macht der Webserver?

Autor: Veröffentlicht

Kurz gesagt: Nginx ist eine Serversoftware, die Anfragen von Browsern entgegennimmt und Dateien einer Website ausliefert oder den Datenverkehr an eine Anwendung weiterleitet. Sie kann auch verschlüsselte HTTPS-Verbindungen verarbeiten, den Datenverkehr auf mehrere Server verteilen und Kopien von Antworten im Cache speichern. Bei Managed Hosting kümmert sich gewöhnlich der Anbieter darum; auf deinem eigenen Server kann die Konfiguration deine Aufgabe sein.

Welche Rolle spielt Nginx beim Öffnen einer Website?

Nginx, ausgesprochen „engine-x“, ist vor allem ein HTTP-Server, also ein Programm, das die Kommunikation zum Abrufen von Webseiten abwickelt. Er ist nicht mit einem physischen Server oder einer virtuellen Maschine zu verwechseln: Nginx läuft auf einem solchen Rechner neben anderen Programmen.

Wenn du die Adresse einer Website eingibst, hilft DNS — das System, das Domainnamen Netzwerkadressen zuordnet — dem Browser dabei, den Server zu finden. Der Browser stellt eine Verbindung her und sendet eine Anfrage, beispielsweise nach der Startseite. Erreicht die Anfrage Nginx, entscheidet das Programm anhand seiner Konfiguration, wie es sie verarbeitet. Dabei berücksichtigt es unter anderem den Domainnamen und den Pfad in der Adresse.

Nginx kann statische Dateien direkt ausliefern, also bereits gespeicherte Ressourcen: HTML-Dokumente, CSS-Stylesheets, JavaScript-Skripte oder Bilder. Es ist jedoch weder ein Content-Management-System noch eine Datenbank. Es stellt selbst keine Verwaltungsoberfläche für einen Shop bereit und berechnet auch nicht den Inhalt des Warenkorbs — das sind Aufgaben der Anwendung.

Reverse Proxy, HTTPS und weitere Einsatzmöglichkeiten

Eine zweite wichtige Funktion von Nginx ist die eines Reverse Proxys, also eines Vermittlers, der Anfragen von Nutzern im Namen der Anwendung entgegennimmt. Der Browser verbindet sich mit Nginx. Nginx leitet die Anfrage an den passenden Prozess oder Server weiter und sendet die erhaltene Antwort zurück. So muss die Anwendung Verbindungen aus dem Internet nicht direkt entgegennehmen.

Typische Einsatzmöglichkeiten sind:

Nginx verwendet eine ereignisgesteuerte Architektur: Ein Arbeitsprozess kann viele Verbindungen bedienen, indem er darauf reagiert, dass Daten gelesen oder geschrieben werden können. Das hilft, gleichzeitige Anfragen effizient zu verarbeiten. Es bedeutet aber nicht, dass die bloße Installation des Programms jede Website schneller macht. Langsame Datenbankabfragen können Antworten weiterhin verzögern.

Beispiel: Shop und Anwendung hinter Nginx

Stell dir einen Shop vor, bei dem Nginx die Domain shop.example bedient. Eine Anfrage nach einem Produktbild kann durch das Lesen einer Datei von der Festplatte beantwortet werden. Eine Anfrage nach dem Warenkorb wird dagegen an die Anwendung weitergereicht. Diese prüft die Sitzung des Nutzers, ruft Daten ab und erstellt die Antwort.

Bei WordPressa wird PHP-Code gewöhnlich von PHP-FPM ausgeführt, einem separaten Programm zur Verwaltung von PHP-Prozessen. Nginx leitet die entsprechenden Anfragen über das FastCGI-Protokoll an dieses Programm weiter. Bei einer Anwendung, die in Node.js oder Python geschrieben ist, kann Nginx den Datenverkehr über HTTP an deren Server weiterleiten, der auf einem lokalen Port läuft.

Diese Aufgabenteilung hilft bei der Fehlersuche. Wenn Bilder angezeigt werden, der Warenkorb aber einen Fehler liefert, kann Nginx korrekt arbeiten und die Störung in der Anwendung liegen. Der Fehler 502 Bad Gateway bedeutet häufig, dass der Vermittler keine gültige Antwort vom dahinterliegenden Dienst erhalten konnte. Die Ursache muss anhand der Logs ermittelt werden, also der Betriebsprotokolle von Nginx und der Anwendung.

Dabei solltest du den Cache nicht unbedacht für den gesamten Shop aktivieren. Der Warenkorb, der Kundenbereich und Antworten mit personenbezogenen Daten müssen gezielt vom Cache ausgeschlossen oder durch präzise Regeln voneinander isoliert werden.

Nginx oder Apache — worauf kommt es bei der Wahl an?

Apache HTTP Server ist ein weiterer beliebter HTTP-Server. Beide Lösungen können Websites bedienen und die Kommunikation mit Anwendungen vermitteln. Die Entscheidung lässt sich nicht auf „Nginx ist schnell, Apache ist langsam“ reduzieren: Entscheidend sind die Art des Datenverkehrs, die Konfiguration, die Anwendung und die Erfahrung des Administrators.

Ein praktischer Unterschied betrifft .htaccess-Dateien, die bei Apache lokale Regeln enthalten können, etwa für Weiterleitungen. Nginx liest diese Dateien nicht. Beim Umzug einer Website musst du deshalb die benötigten Regeln in die Nginx-Konfiguration übertragen, statt nur die Dateien der Website zu kopieren.

Nginx und Apache können auch gemeinsam betrieben werden: Nginx nimmt den Datenverkehr entgegen, während Apache einen Teil der Anfragen verarbeitet. Die Aussage „Der Hostinganbieter verwendet Nginx“ beschreibt daher weder die gesamte Konfiguration noch garantiert sie eine bestimmte Leistung.

Musst du Nginx selbst konfigurieren?

Bei Shared Hosting oder Managed Hosting solltest du den Anbieter fragen, wer für HTTPS, Weiterleitungen, den Cache und die von der Anwendung benötigten Regeln zuständig ist. Möglicherweise kannst du alle nötigen Einstellungen im Verwaltungsbereich vornehmen, ohne Zugriff auf die Serverkonfiguration zu haben.

Auf einem eigenen VPS, also einem virtuellen Server, bist du gewöhnlich für Installation, Updates, Zertifikate und Fehlerdiagnose verantwortlich. Sichere vor einer Konfigurationsänderung eine funktionierende Kopie. Der Befehl nginx -t prüft die Syntax und die Verfügbarkeit der angegebenen Dateien. Er bestätigt jedoch nicht, dass die Anwendung korrekt funktioniert oder die Regeln sicher sind.

Lade nach einem erfolgreichen Test die Konfiguration neu und prüfe anschließend die Website, die Anmeldung, die Weiterleitungen und die Fehlerprotokolle. Die genauen Dateipfade und Befehle zur Verwaltung des Dienstes solltest du in der Dokumentation von Nginx und der verwendeten Betriebssystemdistribution nachschlagen — sie hängen von der Installationsart ab.

Siehe auch: Was ist 2FA?

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.