Nginx mehr als nur ein Webserver

Nginx hat sich von vielen fast unbemerkt zu einem multifunktionalen Werkzeug entwickelt. Was „damals“ als Apache-Ersatz zur Lösung des 10k-Problems begonnen hat, ist heute einer der meist genutzten Webserver bei großen Sites. Durch seinen Funktionsumfang muss Nginx nicht zwangsläufig ein Replace des Apache sein, er hat auch viele andere Stärken die man sich zu Nutze machen kann ohne „seinen“ Apache als Applikationsserver zu verlieren.

Nginx ist ein stabiles und hochperformantes „Stück“ Software mit vielen Funktionen, die man so vielleicht nicht erwartet hätte. Gegenüber andere Webservern bietet Nginx große Vorteile bei Streaming von Mediendaten. Sites wie Netflix nutzen Nginx auf Basis von FreeBSD um die Inhalte an ihre Kunden auszuliefern. Auf der Nginx Conference 15 gab es einen sehr interessanten Vortrag eines Netflix Technikers der im Details aufgezeigt hat, warum genau die Kombination FreeBSD/Nginx für Netflix am besten passt und was die Vorteile von Nginx sind. Warum FreeBSD statt Linux zum Einsatz kommt dürfte für die meisten nicht wirklich relevant sein. Für Netflix ist es ein großer Vorteil. Der BSD IP-Stack schafft bis zu 5000 gleichzeitige Sessions mehr als Linux, das sind für Netflix dann über 2000 Kunden mehr auf einer Streaming Hardware. Wobei die Leistung die Netflix aus einer x86_64 Hardware, FreeBSD und Nginx mit fast 20 Gbit/s Netzwerkleistung herausholt schon wirklich gut ist. Was aber Nginx für „normale“ Anwendungsfälle so interessant macht, sind seine Fähigkeiten als Reverse Proxy, TLS Offload, TCP Balancer und Caching Server und natürlich seine Leistungsvorteile bei der Auslieferung von Inhalten. Wichtig zu wissen ist aber, dass Nginx zum Beispiel PHP nur per FastCGI einbinden kann. Nginx ist auch einer der ersten Webserver die SPDY und jetzt auch HTTP/2.0 unterstützen.

Wer sich aber noch nicht mit HTTP/2.0 auseinander gesetzt hat, sollte das in einer ruhigen Minute mal tun. Vorweg sei aber gesagt, dass HTTP/2.0 ein anderes Design voraussetzt und sich gründlich von HTTP/1.1 unterscheidet. Einer der wichtigsten Neuerungen ist die nicht mehr inflationäre Nutzung von TCP Session zwischen Clients und Webserver. Mit HTTP/2.0 macht es zum Beispiel deutlich mehr Sinn so viel an Inhalt aus einer Verbindung zu beziehen, anstatt wie bei HTTP/1.1 gerne genommen Inhalten aus möglichst vielen unterschiedlichen Quellen. Mit dem passenden Design in Verbindung mit HTTP/2.0 lässt das 20 Jahre alte HTTP/1 noch viel älter aussehen. Wer es denn dann mal probieren mag, hier das Akamai HTTP/2.0 Demo.

Aber zurück zum Nginx und dessen Verwendung als Reverse Proxy mit TLS Offload. Viele Webanwendungen werden noch auf Plattformen betrieben, die zwar vollständig im Support sind, aber die Anforderungen an TLS verschlüsselte Verbindungen nicht mehr erfüllen. Der Einsatz von TLS ist aber wichtig und man kann sich dem auch nicht mehr verschließen. Die Browserhersteller schaffen hier Tatsachen, in dem sie nur noch bestimmte Funktionen unterstützen, wenn es sich um eine TLS verschlüsselte Verbindung handelt. Google auf der anderen Seite will Webseiten im Ranking schlechter stellen, wenn diese nicht TLS anbieten. Somit ist man in dem Sinne gezwungen etwas zu machen. Auf der anderen Seite wird es endlich Zeit grundsätzlich Verschlüsselung zu nutzen. Nutzt man hier Nginx als Reverse Proxy und seinen TLS Fähigkeiten, wie zum Beispiel auch SNI und HTTP/2.0 mit Fallback auf HTTP/1.1 in Verbindungen mit den Optionen als Reverse Proxy selbst, die zum Beispiel Load Balancing mit einschließen, bekommt man ein mächtiges Werkzeug. Eine andere Funktion von Nginx ist dessen Nutzung als TCP Streaming Proxy und das ebenfalls inklusive TLS Offload. Mit dem TCP Modul lässt sich auch noch eine ganze Menge mehr anfangen. Zum Beispiel ist es möglich damit einen einfachen Load Balancer für eine MySQL aufzubauen. Zudem gibt es noch die Option Nginx als Mail Service Proxy zu nutzen. Dazu kommt noch sein Caching, was zwar nicht in letzter Konsequenz an Varnish heranreicht, aber schlussendlich eine Instanz weniger bedeutet, wenn man statt Varnish auch hier gleich Nginx nutzt. Selbst in der OpenSource Version bringt Nginx eine große Menge an Funktionen mit, die für viele Anwendungsfälle völlig ausreichend sein dürften. Es lassen sich spannende Szenarien mit der Kombination von Apache, Tomcat, jBOSS/Wildfly oder IIS mit Nginx aufbauen, die die jeweiligen Vorteile aller mit einander verbindet.

Unsere Erfahrungen mit Nginx als multifunktionales Werkzeug sind sehr positiv mit vielen flexiblen Einsatzmöglichkeiten. Was man aber trotz all seinen Fähigkeiten sehen muss, Nginx kann natürlich nicht einen „erwachsenen“ ADC ersetzen. Eine Thunder oder vThunder von A10 Networks ist eine andere Liga, welche auch gar keinen Vergleich erlaubt. Daher darf man diesen Vergleich auch gar nicht anstellen, nutzt man Nginx aber genau für den Bereich, für den er auch gemacht ist, hat man ein Werkzeug was einem wirklich weiterhilft. Es muss nicht immer Squid, Varnish, HAproxy und oder Apache sein, Nginx ist eine Alternative die man sich auf jeden Fall ansehen sollte. Wer Fragen hat, kann sich gerne unter den bekannten Kontaktdaten mit uns in Verbindung setzen.