Nginx Konfigurationsgenerator

Nginx-Konfiguration generieren

Nginx-Konfigurationen von Grund auf zu schreiben bedeutet, sich an jedes proxy_set_header, jeden gzip MIME-Typ und den Unterschied zwischen try_files $uri/ /index.php?$args und der Version, die das Routing subtil bricht, zu erinnern. Dieser Generator fragt nach der Domain, dem Upstream, dem PHP-Handler und den SSL-Pfaden und gibt dann einen Serverblock mit sinnvollen Standardwerten für TLS, HTTP/2, statisches Caching und Kompression aus.

So generieren Sie Ihren Serverblock

  1. 1

    Wählen Sie ein Preset

    Statische Seite, PHP-FPM (Laravel, WordPress), Node.js Reverse-Proxy oder eine einfache 301-Weiterleitung.

  2. 2

    Geben Sie die Domain ein

    Fügen Sie die server_name-Liste hinzu: typischerweise www- und nicht-www-Varianten.

  3. 3

    SSL-Details festlegen

    Verweisen Sie auf Ihre Fullchain- und Privkey-Dateien oder überspringen Sie, um nur HTTP zu verwenden.

  4. 4

    Upstream anpassen

    Port, Socket-Pfad oder Backend-URL für proxy_pass-Fälle.

  5. 5

    Kopieren und bereitstellen

    Geben Sie die Ausgabe in /etc/nginx/sites-available ein, führen Sie nginx -t aus und laden Sie neu.

Wie ein guter Serverblock aussieht

Ein moderner Nginx-virtueller Host hat normalerweise diese Teile:

Abschnitt Zweck
listen 443 ssl http2 Akzeptiert HTTPS mit aktiviertem HTTP/2
ssl_certificate + ssl_certificate_key Verweist auf das TLS-Material
ssl_protocols TLSv1.2 TLSv1.3 Alte TLS-Versionen abweisen
gzip on + Typen Komprimiert Text/HTML/JSON/JS/CSS bei der Auslieferung
expires-Header für statische Assets Reduziert die Anzahl der Anfragen von wiederkehrenden Besuchern
try_files Leitet zu einem Front-Controller (PHP, Laravel usw.)
HSTS + Sicherheitsheader Hält den Browser ehrlich bezüglich TLS

Wesentliches für Reverse-Proxys

Für Node.js-, Python- und Ruby-Apps, die hinter Nginx laufen:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Das Vergessen von X-Forwarded-For ist der klassische Weg, um echte Client-IPs in Ihren App-Protokollen zu verlieren.

Häufige Fehler

  • Fehlender server_name-Fallback. Nginx verwendet den ersten Serverblock als Standard, wenn kein Name übereinstimmt. Setzen Sie einen Catch-All server_name _-Block, der 444 zurückgibt, um Host-Header-Angriffe zu vermeiden.
  • Falsche Zertifikatsreihenfolge. Die ssl_certificate-Datei muss die Fullchain (Leaf + Intermediates) sein, nicht nur das Leaf.
  • Zu eifriges Caching. Das Senden von expires 1y auf /index.html wird Bereitstellungen ruinieren. Versionieren Sie stattdessen Asset-URLs.
  • Kein Test vor dem Neuladen. Führen Sie immer nginx -t vor systemctl reload nginx aus: ein Syntaxfehler nimmt die Seite offline.

Häufig gestellte Fragen

HTTP/2 ist stabil und wird in Nginx 1.25+ universell unterstützt. HTTP/3 (QUIC) ist in Nginx 1.25+ als experimentell verfügbar. Für eine Produktionskonfiguration im Jahr 2025 aktivieren Sie HTTP/2 und optional HTTP/3 mit den Direktiven http3 und quic.

Konventionell ist /etc/ssl/certs/ für öffentliche Ketten und /etc/ssl/private/ für Schlüssel. Let’s Encrypt legt alles unter /etc/letsencrypt/live/domain/ ab. Verwenden Sie, was Ihr Erneuerungstool erwartet.

Ja, für die meisten Seiten. Fügen Sie einen separaten Port-80-Serverblock hinzu, der 301 https://$host$request_uri zurückgibt. In Kombination mit HSTS wird der HTTP-Block nach der ersten Anfrage kaum noch aufgerufen.

Führen Sie sudo nginx -t aus, um die Konfiguration ohne Neuladen zu parsen. Wenn “syntax is ok” und “test is successful” ausgegeben wird, laden Sie mit sudo systemctl reload nginx neu. Verwenden Sie niemals restart in der Produktion: Reload wechselt die Konfiguration ohne Unterbrechung des Datenverkehrs.

Verwandte Tools

Tool in anderen Sprachen verfügbar