Nginx

NgineX

Copyright © Shutterstock / Paolo De Gasperis

Was ist Nginx?

Nginx (gesprochen: “Engine ex”) ist primär eine Webserver-Software, die aber auch als Reverse Proxy oder als E-Mail-Proxy (für POP3/ IMAP) eingesetzt werden kann. Im Dezember 2017 wurde die Lösung für 62,7 Prozent der Top 10.000 Webseiten weltweit eingesetzt. In Russland läuft die große Mehrzahl der Webseiten mit dieser Lösung. Erstaunlicherweise hat die Software aber in Deutschland noch große Schwierigkeiten sich durchsetzen, liegt ihr Marktanteil hier doch noch unter 10 Prozent. Dabei bietet die Lösung gerade für kleinere Hardware-Konfigurationen entscheidende Vorteile gegenüber der hierzulande bekannteren und wesentlich häufiger eingesetzten Apache-Alternative.

Geschwindigkeit und Konfigurierbarkeit: Leistung als Vorteil von Nginx

Nginx wurde erstmals 2011 veröffentlicht und vom Russen Igor Sysoev für die hiesige Suchmaschine Rambler konzipiert. Die Software ließ sich jedoch schon in ihrer ersten Version ausgesprochen einfach konfigurieren und arbeitete deutlich schneller als das Pendant von Apache. Ginge es ausschließlich nach Leistungsgesichtspunkten, müsste Nginx überall Marktführer sein: Immer wieder haben Vergleichstests gezeigt, dass die Software im gleichen Zeitraum wesentlich mehr Anfragen als eine Apache-Lösung bearbeiten kann und dafür weniger Speicher benötigt. Die Entwickler der Software selbst sprechen davon, dass ihre Lösung mindestens 10 Mal schneller sein solle – und häufig sogar 100 bis 1000 Mal schneller als eine vergleichbare Apache-Konfiguration sein können. Bei gleicher Hardware ist Nginx deshalb immer überlegen und eignet sich insbesondere für schwächere Aufbauten.

Unternehmen, die seit 2014 neue Webserver in großer Zahl aufgesetzt haben, ließen sich von diesen Vorteilen überzeugen und entschieden sich für Nginx. Beispielsweise Netflix, WordPress.com, Hulu, Doodle, ImageShack oder Golem.de arbeiten mit der russischen Software. Diese hohe Popularität führte aber auch zum Erfolg des kommerziellen Angebots “Nginx Plus”, das kostenpflichtige Module und einem ebensolchen Support anbietet. Ursprünglich wurde die Software unter der freien BSD-Lizenz veröffentlicht, seit August 2014 wurde sie allerdings aus OpenBSD entfernt und steht seit damals, genau wie Apache, nur noch als Port zur Verfügung.

Beispiel Reverse-Proxy: Modularer Aufbau als zusätzlicher Vorteil

Nginx ist als Software durch einen modularen Aufbau gekennzeichnet. Im Alltag ist dies gleich an mehreren Stellen vorteilhaft. Vereinfacht gesagt zeichnet das Programm eine gewisse Wandelbarkeit aus, die es ihm gestattet, unterschiedliche Rollen einzunehmen. Beispielsweise kann die Software als Reverse Proxy fungieren, was wiederum in kleinen Hardware-Konfigurationen große Vorteile bietet.

Wer mit einem solchen Aufbau arbeitet, möchte häufig auch von unterwegs auf das Mediencenter oder beispielsweise auf die Zentrale für die Heimsteuerung zugreifen. Die meisten Heimanwender schaffen es noch, die passende URL mittels DynDNS aufzusetzen. Sie wissen auch, dass am Router noch spezielle Ports freigeschaltet werden müssen, um den Zugriffe auf die Geräte zu gestatten. Was ihnen jedoch häufig nicht klar ist – der Router wird dadurch extrem angreifbar. Der Reverse Proxy füllt diese Löcher und sorgt dafür, dass die Sicherheit nicht leidet. Er nimmt die Anfragen der externen Klienten entgegen und leitet diese weiter oder lehnt sie ab, wenn sie nicht autorisiert sein sollten.

Nginx für die Cloud: Klassische Grenzen werden eingerissen

Die Server-Software eignet sich durch ihre besonderen Charakteristika zudem auch ausgesprochen gut für den Einsatz in der Cloud. Vermieden wird der sogenannte “Vendor Lock-in” bzw. der “Lock-in-Effekt”, der einen durch technische Grenzen an einen Hersteller bindet. Bestehende Systeme können problemlos in öffentliche, private oder hybride Cloud-Lösungen transferiert werden. Die Plus-Version der Software gestattet es zudem, Daten an eine unbegrenzte Zahl unterschiedlicher Apps auszuliefern. Diese können zugleich über eine einzelne Instanz der Software angesprochen werden, was einen deutlichen Performance-Vorteil bietet.

Die Software ist im Cloud-Einsatz kompatibel mit Programmen wie Kubernetes, Meses, Docker und den gängigen App-Entwickler-Tools. Die Software bietet zudem Features wie umfassende Sicherheitskontrollen, Content Caching und Ratenbegrenzungen, die es in dieser Form nicht von Hause aus in den natürlichen Cloud Balancers gibt.

Die Nachteile von Nginx gegenüber Apache

Betreiber von großen Server-Konfigurationen haben in der Regel zwei Gründe, weshalb sie sich für Apache entscheiden bzw. bei der entsprechenden Software-Lösung bleiben und nicht den Wechsel vollziehen:
1. Das auf Apache gespeicherte Wissen lässt sich nur mit großem Aufwand auf das russische Pendant übertragen, da doch einige Dinge in der Hardware-Ansprache anders handgehabt werden. Eine automatische Übernahme der Konfiguration ist nicht möglich.
2. Apache ist an manchen Stellen flexibler.

Dieser zweite Punkt verdient eine tiefere Betrachtung. Nginx ist die schlankere Lösung, aber dies ist Vor- und Nachteil zugleich. Beispielsweise können in der Software keine Anpassungen der Konfigurationen auf Verzeichnisebene vorgenommen werden, wie dies z.B. mit Apache über die “htaccess-Dateien” möglich ist. Daraus resultiert außerdem ein Folgeproblem: Einige Anwendungen sind auf eine Weise konzipiert, dass sie spezielle Apache-Module tief im Code ansprechen. Auch hierfür bietet die Software (noch) keine Lösung. In einem solchen Fall ist die Lösung unbrauchbar, wenn die Anwendung nicht getauscht werden kann (oder soll).

Die Konfiguration von Nginx: Schwieriger als Apache – und doch besser

Die Installation von Nginx gelingt unter Linux einfach und schnell. Auch Einsteiger sollten dies problemlos schaffen. Zuerst sollten alle laufenden Apache-Versionen beendet werden (Kommando: sudo service apache2 stop) . Im Terminal genügt dann der folgende Befehl: sudo apt-get install nginx. Anschließend kann die Software mit dem folgenden Befehl starten: sudo service nginx start.

Im identischen Terminal sollten Sie dann den folgenden Befehl eingeben: curl 127.0.0.1. Mit jenem überprüfen Sie, ob der Start der Software erfolgreich war.

Anschließend geht es zur Konfiguration der Software. Diese läuft etwas komplizierter als Apache, was allerdings ihr Vorteil ist. Bei Apache muss lediglich ein Modul aktivieren, um dadurch alle dynamischen Inhalte mittels PHP ausliefern zu lassen. Nginx verlangt dagegen, dass PHP über einen Hilfsprozess zuerst ausgeführt wird. Konkret läuft eine Anfrage dann so ab: Der Server nimmt die PHP-Anfrage an, leitet sie an den Hilfsprozess weiter, der setzt einen PHP-Interpreter ein und dieser schickt das Ganze zum Webserver.

Was kompliziert klingt, sorgt für den besonderen Speedvorteil der Software. Während bei Aapache der Server durch eine PHP-Anfrage die ganze Zeit belastet wird, ist dies bei Nginx nur kurze Zeit der Vorteil. Der Hilfsprozess sorgt für die Bereitstellung des dynamischen Inhalts und belastet auf diese Weise die Ressourcen des Servers nicht, der dadurch weitere Anfragen beantworten kann. Dieser Hilfsprozess trägt die Bezeichnung “Fast Process Manager” (FPM). Er ist in den gängigen Distributionen im Paket “php-fpm” enthalten. Falls PHP bislang noch nicht auf dem System installiert sein sollte, wird dies vom FPM gleich ebenfalls erledigt.

Nachdem FPM als Service gestartet wurde (z.B. Befehl: sudo service php7.0-fpm start), kann die eigentliche Konfiguration beginnen. Wie es weitergeht, hängt davon ab, für welchen Dienst genau die Software angepasst werden soll. Wer beispielsweise WordPress als CMS installieren möchte, sollte hierfür einen Ordner “/var/www/wordpress” anlegen und für die weitere Arbeit nutzen.

Tipp

Einen Überblick über die Parameter für alle gängigen Anwendungen, die mit Nginx arbeiten, haben die Entwickler der Software in einem eigenen Wiki zusammengetragen.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte