open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Die nginx.conf verstehen – Aufbau, Direktiven und Best Practices

Autor
Die nginx.conf verstehen – Aufbau, Direktiven und Best Practices

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.conf oder /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:

  1. Globale Direktiven – gelten serverweit (z. B. user, worker_processes)
  2. Events-Block – steuert die Verbindungsverwaltung
  3. 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-Adresse
  • server_name – Domainnamen, auf die dieser Server reagiert
  • root – Stammverzeichnis der Website
  • location – 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

  1. Verwende „include“-Struktur → Trenne globale, domainbezogene und sicherheitsrelevante Konfigurationen.

  2. Immer Syntax prüfen:

    nginx -t
    

    Verhindert Serverabstürze durch Tippfehler.

  3. Konfiguration neu laden ohne Downtime:

    nginx -s reload
    
  4. Sicherheitsheader aktivieren:

    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    
  5. Logging anpassen und rotieren: → Nutze Logrotate oder systemd-Integration, um Speicherplatz zu sparen.

  6. 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.