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
- 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
- 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
- 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
- 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
- CPU
- 4 Kerne
- RAM
- 8 GB
- Speicher
- 100 GB NVMe
- Traffic
- 40 TB, 1 Gbit/s
5,99 €/Monat
Ø 5,99 € über 24 Monate
- 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
- 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
- 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
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.