Was ist Nginx und was macht der Webserver?
Autor: Redaktion Domeny.ForSale 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:
- HTTPS-Unterstützung. Nginx kann ein TLS-Zertifikat verwenden, um die Verbindung zum Browser zu verschlüsseln. Die Verbindung zwischen Nginx und der Anwendung muss gesondert konfiguriert werden und ist nicht automatisch verschlüsselt.
- Lastverteilung, auch Load Balancing genannt. Nginx verteilt Anfragen auf mehrere Instanzen einer Anwendung. Wie sinnvoll das ist, hängt auch davon ab, ob die Anwendung mit mehreren Instanzen arbeiten kann.
- Zwischenspeicherung im Cache. Nginx kann eine Antwort der Anwendung speichern und erneut verwenden, statt die Anwendung bei jeder Anfrage einzubeziehen. Dafür sind Regeln nötig, die verhindern, dass private Inhalte an andere Nutzer ausgeliefert werden.
- Weiterleitungen. Nginx kann Besucher von HTTP auf HTTPS oder von einer alten auf eine neue Adresse weiterleiten, wenn der Administrator dies entsprechend konfiguriert.
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?
