nginx (sprich „Engine X“) ist ein quelloffener HTTP-Webserver, der zugleich als Reverse-Proxy, Load-Balancer und CDN-Kantenknoten arbeitet. Entwickelt wurde er ab 2002 von Igor Sysoev, veröffentlicht 2004, mit dem Ziel, das damalige „C10k-Problem“ zu lösen: Zehntausende gleichzeitige Verbindungen auf einem einzelnen Server stabil zu bedienen.

Warum ist nginx so schnell?

Während klassische Webserver wie Apache für jede Verbindung einen eigenen Prozess oder Thread starten, arbeitet nginx ereignisbasiert und asynchron: Eine überschaubare Zahl von Worker-Prozessen verwaltet Tausende Verbindungen gleichzeitig über eine Ereignisschleife (bei Linux unter anderem mit epoll). Das spart Speicher und CPU und macht nginx besonders effizient bei vielen parallelen Anfragen – etwa bei statischen Dateien, Bildern oder JavaScript-Bundles.

Typische Einsatzgebiete

  • Statische Inhalte ausliefern: HTML, CSS, Bilder – mit Gzip-Kompression und Browser-Caching.
  • Reverse-Proxy: Anfragen an dahinterliegende Dienste weiterreichen, zum Beispiel PHP-FPM, Node.js, Python oder Container-Anwendungen.
  • TLS-Terminierung: HTTPS-Verschlüsselung zentral verwalten, während die internen Dienste unverschlüsselt im eigenen Netz bleiben.
  • Load-Balancing: Anfragen auf mehrere Backend-Server verteilen, etwa per Round-Robin, gewichteter Verteilung oder nach Client-IP.
  • Rate-Limiting und Zugriffsschutz: Anfragen begrenzen, um Überlast oder Missbrauch zu dämpfen.

Konfiguration im Überblick

Die Konfiguration liegt zentral in der nginx.conf. Der Grundaufbau besteht aus http-Blöcken (globale Einstellungen), server-Blöcken (je Domain) und location-Blöcken (je URL-Pfad):

server {
    listen 443 ssl;
    server_name www.beispiel.de;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Nach Änderungen prüft nginx -t die Syntax, systemctl reload nginx lädt die neue Konfiguration ohne Verbindungsabbruch. Unter Linux-Distributionen wie Ubuntu wird nginx aus den Paketquellen installiert und als systemd-Dienst betrieben.

nginx und Apache – kein Entweder-oder

nginx ist Open Source, ebenso wie Apache. Beide ergänzen sich in der Praxis häufig: nginx vorn als schneller Proxy und TLS-Endpunkt, Apache hinten für dynamische Seiten mit .htaccess-Logik. Viele große Plattformen und Kubernetes-Cluster setzen nginx außerdem als Ingress-Controller ein – ein Proxy-Konzept, das den Weg in den Cluster hinein steuert.