NGINX

Unsere Services zu NGINX+ auf einen Blick:

  • Beratung, Aufbau und Betrieb von DevOps Architekturen mit NGINX+

  • NGINX Engineering und Consulting

  • Secure WebApp Deployments mit NGINX WAF

  • Vertrieb von NGINX+ Produkten

Was ist NGINX?

NGINX (ausgesprochen „engine x“) ist eine ursprünglich von Igor Sysoev entwickelte Open-Source-Software mit einer Vielzahl von Anwendungsbereichen: NGINX kann als HTTP-Webserver, HTTP Reverse Proxy, HTTP-Cache, TCP/UDP Proxy und -Load Balancing Lösung genutzt werden. Laut Wikipedia kommt NGINX aktuell bei ca. 67 % der 10.000 Webseiten mit dem höchsten Traffic zum Einsatz.

NGINX ist unter der BSD-Lizenz, einer der freizügigsten Open-Source-Lizenzen, veröffentlicht. Damit darf NGINX kopiert, verändert und auch verbreitet werden, sofern ein Copyright-Vermerk auf das ursprüngliche Produkt nicht entfernt wird.

Seit 2011 ist die kostenpflichtige Premium-Version NGINX+ verfügbar. Diese bietet neben offiziellem Support des Herstellers in den Ausführungen Basic, Professional und Enterprise vor allem erweiterte Funktionen, auf die wir noch genauer eingehen werden.

Einer der Gründe für die Verbreitung von NGINX ist der sehr schonende Umgang mit Ressourcen des Hostsystems. Weiterhin glänzt NGINX mit hoher Performance auch in trafficintensiven Szenarien.

Dadurch empfiehlt sich NGINX für den Einsatz zur Verarbeitung von hohem User- und Trafficaufkommen und kommt auch bei großen Webdiensten wie Netflix, GitHub, SourceForge oder WordPress zum Einsatz.

2019 wurde NGINX durch F5 Networks gekauft und in das Unternehmen überführt und schließt dort die Lücke im Bereich SDN, MultiCloud und DevOps.

Merkmale von NGINX

NGINX ist unter allen gängigen Betriebssystemen (wie FreeBSD, Linux und Windows) und auch in modernen Container-Lösungen (wie Docker) einsetzbar.

Während z. B. Apache für jede Anfrage einen eigenen Prozess startet, der entsprechend Arbeitsspeicher benötigt und somit vor allem bei hohem Traffic schnell zu mehreren tausend Prozessen führt, basiert NGINX auf einer asynchronen, von vornherein auf Performance ausgelegten Architektur. Auch bei Lastspitzen bleibt der Ressourcenverbrauch relativ konstant, da pro Prozess tausende von Verbindungen verarbeitet werden können.

NGINX liefert primär statische Seiten aus. Sollen auch dynamische Inhalte, wie z. B. PHP-Seiten, mit NGINX bereitgestellt werden, muss z. B. zusätzlich PHP-FPM eingesetzt werden.

Was sind die Vorteile von NGINX+?

Die Premium-Version NGINX+ ist um zahlreiche Features angereichert. Dazu zählen unter anderem:

  • Session Persistence basierend auf Cookies

    Dadurch können auch sessionaffine Applikationen durch Load Balancing hochverfügbar ausgelegt und skaliert werden.

  • Aktive Health-Checks von Backend-Ressourcen

    Aktive Health-Checks überprüfen dauerhaft die Verfügbarkeit der Backend-Ressourcen, damit Traffic nicht an überlastete, ausgeschaltete oder deaktivierte Backend-Server geleitet wird.

  • Service Discovery durch DNS

    Die Loadbalancing-Ziele können dynamisch durch DNS-Anfragen erweitert oder reduziert werden. Vor allem bei der Arbeit mit MicroServices oder in Cloud-Umgebungen können so im Falle von sehr volatilem Traffic ganz einfach automatisiert Container/VMs hinzugeschaltet oder reduziert werden.

  • JWT Authentifizierung für APIs

    NGINX+ kann Webrequests an APIs auf gültige JSON Web Token überprüfen und diese gegen ein lokales Key File oder einen Remote-Service verifizieren.

  • Absicherung von WebApps via NGINX WAF

    Durch das WAF (Web Application Firewall)-Modul, welches auf ModSecurity basiert, können Webapplikationen gegen diverse prominente Angriffszenarien, wie z. B. die OWASP Top 10, abgesichert werden.

  • Monitoring mit Real-Time-Dashboard

    NGINX+ beinhaltet ein Echtzeit-Monitoring-Interface, welches Daten über Key Load und Performance bereitstellt.

    Durch das RESTful JSON Interface können diese Daten auch ganz einfach in bestehende Dashboards und Third-Party-Monitoring-Tools integriert werden.

  • Hochverfügbarkeit (Active/Active und Active/Passive)

    Eine Umgebung ist immer nur so verfügbar wie das schwächste Glied der Kette. Damit NGINX+ nicht das schwächste Glied ist, wird Hochverfügbarkeit in Form von Active/Passive-Clustern unterstützt.

    Für die Verarbeitung von sehr hohem Trafficaufkommen sind auch AActive/Passive-Cluster möglich.

Für den professionellen Einsatz in modernen Software-Defined-Umgebungen wird NGINX+ höchsten DevOps Anforderungen gerecht und ist hervorragend für den Einsatz als API-Gateway oder Ingress Controller geeignet.

Vor allem die Programmierbarkeit (JavaScript Module, Lua) und nahtlose Integration in Ansible, Chef oder Puppet sowie die Möglichkeit der dynamischen Rekonfiguration ohne Neustart von Prozessen machen den Betrieb und die Durchführung von Änderungen sehr angenehm.

NGINX+ vs. Kemp oder Citrix?

Einsatzgebiet

Für NGINX+ gegenüber den klassischen ADC-Lösungen von Citrix oder Kemp spricht vor allem der hohe Grad an zu erreichender Automatisierung.

Automatisierung ist hier nicht nur nachträglich eingebaut, sondern ein Hauptbestandteil der Lösung.

Dabei fokussiert sich NGINX+ vor allem auf die Verarbeitung des sogenannten East-West Traffics und findet sich somit eher nicht im Einzugsbereich der NetOps und SecOps Anbieter, sondern im Arbeitsbereich der DevOps wieder.

Kosteneffizienz

Verglichen mit den anderen ADC-Lösungen bietet NGINX+ eine hervorragende Kosteneffizienz ohne auf Performance und Funktionalität verzichten zu müssen.

One 4 all

Die Möglichkeit, NGINX+ überall (Public/Private Cloud, Bare Metal, VMs, Container) einzusetzen, ohne in Version und Lizenz unterscheiden zu müssen, spricht ebenfalls für sich.

Anwendungsfall

Neben dem Einsatz im DevOps Bereich als API-Gateway für Webservices oder Kubernetes Ingress-Controller für MicroServices ist NGINX auch hervorragend für die hochverfügbare Auslegung von nahezu beliebigen Enterprise-Diensten und Applikationen einsetzbar.

Als Beispiel wollen wir hier den Betrieb einer MultiNode Jira Datacenter Umgebung inklusive sicherer Veröffentlichung skizzieren:

In diesem Beispiel übernimmt ein NGINX+ Active/Passive-Verbund auf einem gehärteten Linux System in der DMZ die sichere Veröffentlichung von Jira inklusive Web Application Firewall und damit der Absicherung der Applikation gegen die OWASP Top10 als auch die SSL Terminierung samt Hardening (gemäß den aktuellen Vorgaben der Qualys SSL Labs).

Im Server-LAN terminieren zwei NGINX+ Instanzen (ebenfalls auf gehärteten Linux Systemen) im Active/Passive-Verbund als Reverse Proxys die SSL Sessions (SSL Offloading), um diese gebündelt und TCP-optimiert an die Tomcat Server weiterzuleiten. Dies reduziert die Anzahl an Verbindungen für die Tomcat Systeme und damit die für das Session Handling notwendigen CPU-Ressourcen, die Tomcats stattdessen für die Auslieferung der Applikation verwenden können.

Natürlich werden die Sessions anhand sinnvoller Load-Balancing-Methoden möglichst gleichmäßig auf die einzelnen Jira Datacenter Nodes verteilt. Jeder Node wird durch die NGINX+ Instanzen durch aktive Layer 7 Health-Checks auf Verfügbarkeit überprüft und nur bei tatsächlicher Verfügbarkeit in die Lastverteilung aufgenommen.

Dieser für Enterprise-Dienste exemplarische Aufbau bietet sowohl die Möglichkeit der nahtlosen Wartung der einzelnen Jira Datacenter Nodes als auch der NGINX+ Instanzen und kann somit neben einem schlanken Deployment und hoher Performance auch hohe Verfügbarkeit garantieren.

Ich berate Sie gerne.

Anneke Schmeer

Business Development

Tel. +49 221 986530-99

anfrage@brainbits.net