Was ist nginx?

nginx liefert Webseiten aus, verteilt Anfragen auf mehrere Server und sitzt oft unbemerkt vor anderen Anwendungen. Hier steht, wie das funktioniert und wann du damit selbst zu tun bekommst.

Redaktion Webspacevergleich.net Stand: 6 Minuten Lesezeit

nginx ist ein Webserver. Er nimmt Anfragen von Browsern entgegen und schickt Dateien zurück, also HTML, Bilder, Stylesheets. Das allein macht ihn noch nicht besonders. Bekannt wurde nginx, weil er sehr viele gleichzeitige Verbindungen mit wenig Arbeitsspeicher bewältigt und sich deshalb gut als Vermittler vor andere Programme stellen lässt.

Igor Sysoev begann die Entwicklung Anfang der 2000er Jahre in Moskau, die erste öffentliche Version erschien 2004. Heute gehört nginx zu den meistgenutzten Webservern überhaupt. Die Firma NGINX Inc. wurde 2019 von F5 übernommen, das freie Projekt läuft unter nginx.org weiter.

Drei Rollen: Webserver, Reverse Proxy, Load Balancer

In der Praxis übernimmt nginx meist eine von drei Aufgaben, oft auch mehrere gleichzeitig.

Als Webserver

Hier liefert nginx Dateien direkt von der Festplatte aus. Für statische Seiten, etwa aus einem Generator wie Hugo oder Eleventy, reicht das völlig. PHP führt nginx nicht selbst aus. Für WordPress oder andere PHP-Anwendungen reicht nginx die Anfrage an PHP-FPM weiter, einen eigenen Dienst, der die Skripte abarbeitet. Die Verbindung läuft über das FastCGI-Protokoll.

Als Reverse Proxy

Ein Reverse Proxy steht vor einer Anwendung und nimmt alle Anfragen für sie entgegen. Dahinter kann ein Node.js-Programm laufen, ein Python-Dienst, ein Apache oder ein Container. Der Besucher sieht nur nginx. Das ist heute vermutlich der häufigste Grund, nginx überhaupt zu installieren. nginx kümmert sich dann um TLS-Zertifikate, Komprimierung, Caching und das Ausliefern statischer Dateien, die Anwendung macht nur noch ihre eigentliche Arbeit.

Als Load Balancer

Laufen mehrere Kopien einer Anwendung, verteilt nginx die Anfragen auf sie. Die Server trägst du in einem upstream-Block ein. Standard ist Round Robin, also reihum. Alternativ gibt es least_conn (der Server mit den wenigsten offenen Verbindungen bekommt die nächste Anfrage) und ip_hash, bei dem ein Besucher immer beim selben Server landet. Fällt ein Server aus, merkt nginx das an fehlgeschlagenen Anfragen und schickt eine Weile niemanden mehr hin. Aktive Gesundheitsprüfungen, bei denen nginx die Server selbst regelmäßig abfragt, gibt es in der freien Version nicht, die bringt erst NGINX Plus mit.

Warum nginx mit wenig Speicher auskommt

Ältere Webserver starteten für jede Verbindung einen eigenen Prozess oder Thread. Hundert gleichzeitige Besucher bedeuteten hundert Prozesse, jeder mit eigenem Speicherbedarf. Bei langsamen Verbindungen warten diese Prozesse die meiste Zeit nur.

nginx arbeitet anders. Ein Master-Prozess liest die Konfiguration und startet eine kleine, feste Zahl von Worker-Prozessen, meist einen pro CPU-Kern. Jeder Worker bedient in einer Ereignisschleife tausende Verbindungen gleichzeitig. Er fragt das Betriebssystem (unter Linux über epoll), welche Verbindungen gerade Daten bereithalten, und arbeitet genau diese ab. Wartet eine Verbindung, kümmert sich der Worker in der Zwischenzeit um andere.

Das hat Folgen für den Betrieb:

  • Der Speicherverbrauch steigt mit der Besucherzahl nur langsam.
  • Viele offene, langsame Verbindungen bringen nginx kaum ins Schwitzen.
  • Ein Modul, das blockiert, bremst einen ganzen Worker. Deshalb lagert nginx rechenintensive Arbeit wie PHP an externe Dienste aus.

Ein Neustart ist für Konfigurationsänderungen nicht nötig. Mit nginx -s reload oder systemctl reload nginx startet der Master neue Worker mit der neuen Konfiguration, die alten beenden ihre laufenden Anfragen und gehen dann.

Ein server-Block als Beispiel

Unter Debian und Ubuntu installierst du nginx mit sudo apt install nginx. Die Hauptkonfiguration liegt in /etc/nginx/nginx.conf. Die einzelnen Websites stehen bei diesen Distributionen in /etc/nginx/sites-available/ und werden per Symlink in sites-enabled/ aktiviert. Das offizielle Paket von nginx.org nutzt dagegen /etc/nginx/conf.d/.

Ein server-Block für eine WordPress-Seite mit PHP-FPM sieht etwa so aus:

server {
    listen 80;
    listen [::]:80;
    server_name example.de www.example.de;

    root /var/www/example.de;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

try_files prüft, ob die angefragte Datei existiert, und gibt sonst an index.php weiter. So funktionieren die „schönen“ Permalinks von WordPress ohne .htaccess. Der Pfad zum PHP-FPM-Socket hängt von der PHP-Version ab, auf Debian 13 ist es 8.4, unter Ubuntu 24.04 8.3. Das Snippet fastcgi-php.conf bringt das Debian-Paket mit.

Für HTTPS ergänzt du listen 443 ssl; sowie die Pfade zu Zertifikat und Schlüssel. Bequemer geht das mit Certbot, das Zertifikate von Let's Encrypt holt und die Konfiguration anpasst. Vor jedem Neuladen prüfst du die Syntax:

sudo nginx -t
sudo systemctl reload nginx

Als Reverse Proxy schrumpft der Block auf wenige Zeilen:

server {
    listen 80;
    server_name app.example.de;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Die Header sorgen dafür, dass die Anwendung den echten Hostnamen und die IP-Adresse des Besuchers erfährt und nicht nur 127.0.0.1 sieht.

nginx, NGINX Plus und die Forks

Unter dem Namen nginx laufen inzwischen mehrere Produkte. Für einen eigenen Server reicht fast immer das erste.

nginx Open Source ist das freie Projekt. Es erscheint in zwei Zweigen: „mainline“ mit neuen Funktionen und „stable“, das nur Fehlerkorrekturen bekommt. Die Versionsnummern folgen einem Muster, ungerade Zahlen an zweiter Stelle sind mainline, gerade sind stable. Seit 2024 wird der Quellcode auf GitHub entwickelt.

NGINX Plus ist die kommerzielle Ausgabe von F5. Sie baut auf dem freien Kern auf und ergänzt unter anderem aktive Health Checks, eine API zur Konfiguration im laufenden Betrieb, erweitertes Monitoring und Support. Das richtet sich an Firmen mit größeren Installationen.

Angie ist ein Fork, den ehemalige nginx-Entwickler 2022 gestartet haben. Er bleibt weitgehend kompatibel zur nginx-Konfiguration und bringt einige Funktionen, die es sonst nur in NGINX Plus gibt. freenginx entstand Anfang 2024, als Maxim Dounin, einer der langjährigen Kernentwickler, sich von F5 trennte und ein eigenes Projekt aufzog. Beide sind ernsthafte Projekte, haben aber eine viel kleinere Nutzerbasis. Für Anleitungen, Pakete und Hilfe im Netz bist du mit dem Original besser versorgt.

Andere Server mit nginx im Kern sind OpenResty, das nginx um die Skriptsprache Lua erweitert, und Tengine. Die brauchst du nur, wenn eine Anwendung ausdrücklich danach verlangt.

Wann du selbst mit nginx arbeitest

Auf einem normalen Webhosting-Paket hast du keinen Zugriff auf den Webserver. Ob dort Apache, nginx oder beides läuft, entscheidet der Hoster, und meist merkst du es nur daran, ob .htaccess-Dateien wirken. Für Blogs, Vereinsseiten und kleine Shops ist das auch völlig in Ordnung.

Selbst Hand an nginx legst du, sobald du einen vServer oder dedizierten Server betreibst. Typische Anlässe:

  • Du willst mehrere Anwendungen auf einem Server unter verschiedenen Domains betreiben.
  • Eine Node.js-, Python- oder Go-Anwendung soll per HTTPS erreichbar sein.
  • Du hostest WordPress selbst und willst Caching und PHP-Einstellungen in der Hand haben.

Dann bedeutet nginx aber auch: Updates, Zertifikate und Logrotation sind deine Sache. Wer das nicht will, ist mit einem verwalteten Angebot besser bedient. Die Unterschiede erklärt der Ratgeber Managed oder Root-Server, und ob überhaupt ein Server nötig ist, klärt vServer oder Webhosting.

Günstige Tarife: vServer

  1. Contabo

    Cloud VPS 4

    vServer monatlich kündbar

    CPU
    4 Kerne
    RAM
    8 GB
    Speicher
    100 GB SSD
    Traffic
    Unbegrenzt (Fair Use)

    ab 5,24 €/Monat

    24 Monate, danach 6,55 €

    Ø 5,24 € über 24 Monate

    Zum Tarif
    • 4 vCPU-Kerne (geteilt), 8 GB RAM
    • 200 Mbit/s-Port, DDoS-Schutz und Firewall inklusive
    • 1 Snapshot(s) inklusive
    • IPv4 und IPv6 inklusive
    Speicherart
    SSD
    Domains inkl.
    keine
    Backup
    Auto Backup als Add-on (3,99 € netto/Monat lt. Konfigurator)
    Laufzeit
    monatlich kündbar
    Einrichtung
    keine Angabe
    Geprüft
  2. dogado

    Cloud Server S 4.0

    vServer 1 Jahr Laufzeit

    CPU
    2 Kerne
    RAM
    4 GB
    Speicher
    100 GB NVMe
    Traffic
    1.000 Mbit/s Bandbreite

    ab 0,99 €/Monat

    6 Monate, danach 6,99 €

    Ø 5,49 € über 24 Monate

    Zum Tarif
    • 2 vCPU, 4 GB RAM
    • 1.000 Mbit/s Bandbreite
    • 30 Tage Geld-zurück-Garantie
    • Alternativ monatlich kündbar für 8,99 €
    Speicherart
    NVMe
    Domains inkl.
    keine
    Backup
    Backup Service optional (Aufpreis)
    Laufzeit
    1 Jahr Laufzeit
    Einrichtung
    keine Gebühr
    Geprüft
  3. webtropia

    Cloud VPS Linux S2

    vServer monatlich kündbar

    CPU
    4 Kerne
    RAM
    8 GB
    Speicher
    100 GB NVMe
    Traffic
    40 TB, 1 Gbit/s

    5,99 €/Monat

    Ø 5,99 € über 24 Monate

    Zum Tarif
    • 4 vCores und 8 GB RAM garantiert
    • Linux (Debian, Ubuntu, AlmaLinux, Rocky); Windows-Variante gegen Aufpreis
    • Monatlich kündbar, keine Setupgebühr
    • 1 .de-Domain inklusive
    • Plesk ab 10,50 € im Monat zubuchbar
    Speicherart
    NVMe
    Domains inkl.
    1
    Backup
    1 Snapshot-Backup inklusive, Premium-Backup zubuchbar
    Laufzeit
    monatlich kündbar
    Einrichtung
    keine Gebühr
  4. VPS SX

    vServer 1 Jahr Laufzeit

    CPU
    4 Kerne
    RAM
    8 GB
    Speicher
    120 GB SSD
    Traffic
    inklusive

    ab 3,99 €/Monat

    12 Monate, danach 8,99 €

    Ø 6,49 € über 24 Monate

    Zum Tarif
    • KVM oder Virtuozzo
    • Eigene ISO-Images, VNC-Konsole
    • Rechenzentrum Frankfurt/Main
    • Bei 1 Monat Laufzeit: 9,90 € Einrichtung
    Speicherart
    SSD
    Domains inkl.
    keine
    Backup
    5 GB Backup-Speicher inklusive
    Laufzeit
    1 Jahr Laufzeit
    Einrichtung
    keine Gebühr
    Geprüft

Alle 33 Tarife vergleichen

Häufige Fragen

Wie spricht man nginx aus?

Wie „Engine X“, also auf Englisch „endschin ex“. Die Schreibweise ist im Projekt klein, die kommerzielle Variante schreibt sich NGINX Plus.

Kann ich auf normalem Webhosting nginx selbst konfigurieren?

Nein. Auf Webhosting teilst du dir den Webserver mit anderen Kunden, die Konfiguration verwaltet der Hoster. Manche Anbieter setzen nginx ein, du siehst davon aber höchstens Optionen im Kundenmenü. Eigene server-Blöcke schreibst du erst auf einem vServer mit Root-Zugang.

Kann nginx .htaccess-Dateien lesen?

Nein, nginx kennt keine verteilten Konfigurationsdateien im Webverzeichnis. Regeln aus einer .htaccess musst du in die zentrale Konfiguration übertragen, Umleitungen etwa als return oder rewrite. Wie sich das im Alltag auswirkt, steht im Vergleich Apache vs. nginx.

Ist nginx kostenlos?

nginx Open Source steht unter einer BSD-ähnlichen Zwei-Klausel-Lizenz und kostet nichts, auch nicht im kommerziellen Einsatz. Geld verlangt F5 nur für NGINX Plus, das zusätzliche Funktionen und Herstellersupport mitbringt.

Brauche ich nginx für WordPress?

Nein. WordPress läuft mit Apache genauso wie mit nginx. Auf einem eigenen Server ist nginx mit PHP-FPM eine verbreitete Wahl, bei WordPress-Hosting entscheidet der Anbieter. Achte dann eher auf PHP-Version, Caching und Backups als auf den Webserver.

Weiterlesen