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 Plus verfügbar. Diese bietet neben offiziellen Support des Herstellers in den Geschmacksrichtungen Basic, Professional und Enterprise vor allem erweiterte Funktionen, auf die wir noch genauer eingehen werden.

Einer der Gründe für die wesentliche Verbreitung von NGINX ist der sehr schonende Umgang mit Ressourcen des Hostsystems. Weiterhin glänzt NGINX mit hoher Performance auch in traffic-intensiven 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 1000 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 Plus ist um zahlreiche Features angereichert. Dazu zählen unter anderem: 

  • Session Persistence basierend auf Cookies
    Dadurch können auch session-affine 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önne 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 Web Applikationen 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 Traffic Aufkommen sind auch Active/Active 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 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.