- Veröffentlicht am
- • How2-Tipps
Die nginx.conf verstehen – Aufbau, Direktiven und Best Practices
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Die nginx.conf ist das Herzstück des NGINX-Webservers. Sie bestimmt, wie NGINX Anfragen verarbeitet, welche Websites ausgeliefert werden, wie Lastverteilung, Caching und Sicherheit funktionieren. Wer die Struktur und Syntax dieser Datei versteht, kann NGINX gezielt optimieren – von der kleinen Entwicklungsumgebung bis zum produktiven Hochlast-System.
In diesem Artikel lernst du Schritt für Schritt den Aufbau der nginx.conf, die wichtigsten Direktiven und Best Practices für eine saubere und performante Konfiguration.
1. Aufbau der nginx.conf
Die Standarddatei liegt in der Regel hier:
- Linux / macOS (Homebrew):
/etc/nginx/nginx.confoder/opt/homebrew/etc/nginx/nginx.conf - Windows:
C:\nginx\conf\nginx.conf
Eine typische Datei sieht so aus:
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Die Struktur ist hierarchisch aufgebaut:
- Globale Direktiven – gelten serverweit (z. B.
user,worker_processes) - Events-Block – steuert die Verbindungsverwaltung
- HTTP-Block – enthält Einstellungen für HTTP, Server und Location
2. Globale Direktiven
Globale Direktiven stehen außerhalb von Blöcken und wirken auf den gesamten Server.
| Direktive | Bedeutung |
|---|---|
user www-data; |
Benutzer, unter dem NGINX läuft |
worker_processes auto; |
Anzahl der parallelen Prozesse (z. B. 1 pro CPU-Kern) |
error_log /var/log/nginx/error.log; |
Pfad zur Fehlerprotokolldatei |
pid /run/nginx.pid; |
Speicherort der Prozess-ID |
Tipp: Verwende worker_processes auto; – NGINX erkennt die optimale Anzahl selbst.
3. Events-Block
Der events-Block definiert, wie NGINX eingehende Verbindungen verarbeitet.
events {
worker_connections 1024;
multi_accept on;
}
| Direktive | Beschreibung |
|---|---|
worker_connections |
Maximale gleichzeitige Verbindungen pro Worker |
multi_accept |
Akzeptiert mehrere neue Verbindungen gleichzeitig |
Ein hoher Wert verbessert die Performance bei stark frequentierten Seiten.
4. HTTP-Block
Der http-Block ist der wichtigste Abschnitt. Er steuert alles rund um Webanfragen, Logging, Caching, Kompression und Security.
Beispiel:
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/sites-enabled/*;
}
Wichtige Direktiven im http-Block:
| Direktive | Funktion |
|---|---|
include mime.types; |
Dateitypen-Mapping für Content-Type |
default_type application/octet-stream; |
Standard-MIME-Typ |
sendfile on; |
Effizientes Senden statischer Dateien |
keepalive_timeout 65; |
Verbindungsoffenhaltezeit |
gzip on; |
Aktiviert Kompression |
access_log / error_log |
Pfade für Log-Dateien |
5. Server-Block
Ein server-Block definiert eine Website oder virtuelle Domain. Du kannst mehrere server-Blöcke innerhalb des http-Blocks verwenden.
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Erklärung:
listen– Port und ggf. IP-Adresseserver_name– Domainnamen, auf die dieser Server reagiertroot– Stammverzeichnis der Websitelocation– Regeln, wie NGINX Anfragen verarbeitet
6. Location-Block
Der location-Block erlaubt fein abgestimmte Kontrolle über URLs, APIs oder statische Inhalte.
Beispiel:
location /images/ {
root /data;
}
NGINX liefert dann Dateien aus /data/images/ aus.
Weitere Beispiele:
| Muster | Bedeutung |
|---|---|
/ |
gilt für alle Anfragen |
= /about |
exakter Treffer |
^~ /static/ |
Priorisierte statische Inhalte |
~ \.php$ |
regulärer Ausdruck für PHP-Dateien |
7. include-Direktiven
Mit include kannst du Konfigurationen modular gestalten.
Das sorgt für Übersichtlichkeit und leichte Wartung.
Typisch:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
So lassen sich zusätzliche Websites oder Proxy-Regeln in separaten Dateien verwalten.
8. Best Practices
Verwende „include“-Struktur → Trenne globale, domainbezogene und sicherheitsrelevante Konfigurationen.
Immer Syntax prüfen:
nginx -tVerhindert Serverabstürze durch Tippfehler.
Konfiguration neu laden ohne Downtime:
nginx -s reloadSicherheitsheader aktivieren:
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";Logging anpassen und rotieren: → Nutze Logrotate oder systemd-Integration, um Speicherplatz zu sparen.
Immer Gzip und HTTP/2 aktivieren:
gzip on; http2 on;
Die nginx.conf ist das Rückgrat deines Webservers. Wer sie versteht, kann NGINX von einem einfachen Webserver zu einer hochperformanten, sicheren und skalierbaren Plattform ausbauen.
Mit klarer Struktur, kommentierten Dateien und modularer Konfiguration behältst du selbst in komplexen Umgebungen die Kontrolle.