Skip to content

Nginx. Virtuelle Hosts im Expertenmodus

Dieser Artikel ist die Fortsetzung von Nginx. Arbeiten mit virtuellen Hosts. Wenn Sie Ihre erste Website einrichten, beginnen Sie dort: Das Erstellen eines Hosts im Konstruktormodus deckt die meisten Fälle ab. Hierher wechseln Sie, wenn Sie Direktiven benötigen, die das Formular nicht bietet: ein eigenes try_files, Proxying, spezielle FastCGI-Parameter, Rate-Limiting. Im Folgenden: wie Sie den Expertenmodus öffnen, wie Sie ohne Datenverlust zwischen den Modi wechseln, was die Startvorlage enthält und wie Sie PHP-FPM manuell einbinden.

Wann Sie den Expertenmodus brauchen

Den Expertenmodus benötigen Sie, wenn das Standardformular nicht ausreicht. Typische Fälle:

  • ein eigenes try_files — zum Beispiel für eine SPA mit try_files $uri $uri/ /index.html; oder für WordPress mit try_files $uri $uri/ /index.php?$args;;
  • abweichende access_log / error_log — eigenes Format, eigener Pfad oder deaktivierte Logs;
  • proxy_pass an einen Upstream-Dienst mit feiner Abstimmung von Headern und Timeouts;
  • zusätzliche fastcgi_param-Direktiven oberhalb des Standard-PHP-FPM-Blocks;
  • Rate-Limiting, Caching, gzip-Einstellungen;
  • Direktiven if, map, set.

Für typische Websites — statische Inhalte, WordPress auf einem Standardstack, ein einfacher Reverse-Proxy — ist der Expertenmodus nicht erforderlich. Verwenden Sie den Konstruktormodus.

Den Expertenmodus öffnen

  1. Klicken Sie im Seitenmenü des Bereichs Nginx auf «Virtuellen Host erstellen».
  2. Die Erstellungsseite öffnet sich im Konstruktormodus. Klicken Sie in der unteren Leiste auf «Expertenmodus aktivieren».
  3. Es erscheint der Dialog «In den Expertenmodus wechseln». Klicken Sie auf «Fortfahren».
  4. Es öffnet sich der Editor für die Roh-Konfiguration mit Syntaxhervorhebung und einer Startvorlage.
  5. Füllen Sie das Feld «Domainname» über dem Editor aus — das ist der Name des virtuellen Hosts, unter dem das Panel die Konfiguration speichert. Passen Sie die Vorlage an Ihre Website an.
  6. Klicken Sie auf «Erstellen».

⚠️ Moduswechsel im Erstellungsformular

Der Rückweg in den Konstruktor führt über die Schaltfläche «Konstruktormodus aktivieren» in derselben unteren Leiste. Im Erstellungsformular gilt:

  • Beim ersten Wechsel in den Expertenmodus öffnet sich die Startvorlage (siehe unten).
  • Beim Rückwechsel in den Konstruktor werden die Formularfelder wiederhergestellt — die im Konstruktor eingegebenen Werte bleiben erhalten.
  • Beim erneuten Wechsel in den Expertenmodus wird der Zwischenentwurf nicht gespeichert und durch dieselbe Startvorlage überschrieben.

Wenn Sie die Roh-Konfiguration im Expertenmodus bearbeitet, in den Konstruktor gewechselt und dann zurückgewechselt haben, gehen die Änderungen verloren. Speichern Sie die Konfiguration vor dem Wechsel über «Erstellen» oder kopieren Sie den Text in einen externen Editor.

Startvorlage

nginx
# This configuration file is automatically generated by BeAdmin.
# You can modify it according to your needs.

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }


    access_log /var/log/nginx/example.access.log;
    error_log  /var/log/nginx/example.error.log;
}

Was die einzelnen Direktiven bewirken:

  • listen 80; — Port. Für HTTPS ändern Sie ihn in 443 ssl; und ergänzen Sie ssl_certificate und ssl_certificate_key. Im Expertenmodus stellt das Panel das Zertifikat beim Speichern des Hosts nicht automatisch aus — stellen Sie es nach dem Anlegen manuell aus, wie im Artikel Ausstellung eines SSL-Zertifikats beschrieben.
  • server_name example.com www.example.com; — die Domains, auf die der Block antwortet. Ist mit dem Feld «Domainname» über dem Editor verknüpft (siehe unten).
  • root /var/www/example.com/public; — das Wurzelverzeichnis der Website-Dateien. Ersetzen Sie example.com durch Ihre Domain. Das Verzeichnis muss existieren und für den Benutzer nginx lesbar sein, sonst antwortet die Seite mit 403 oder 500.
  • index index.php index.html; — Standarddateien bei einer Verzeichnisanfrage. Die Reihenfolge zählt: Bei einer PHP-Site geben Sie index.php zuerst an.
  • location / { try_files $uri $uri/ =404; } — das Standardschema: zuerst die Datei am exakten Pfad suchen, dann das Verzeichnis, sonst 404. Für eine SPA ersetzen Sie =404 durch /index.html. Für WordPress durch /index.php?$args.
  • access_log und error_log — Pfade zu den Logs. Es ist praktisch, sie unter /var/log/nginx/<domain>.access.log und /var/log/nginx/<domain>.error.log zu führen — so sind die Logs konfiguriert, die das Nginx-Modul im Panel anzeigt.

⚠️ Einsetzen der Domain in server_name

Sobald das Feld «Domainname» nach dem Öffnen des Editors im Erstellungsformular zum ersten Mal nicht leer ist, setzt das Panel einmalig den Wert <domain> www.<domain> in das server_name der Startvorlage ein — zum Beispiel example.com www.example.com. Danach werden das Feld «Domainname» und die Zeile server_name nicht synchronisiert: Verwalten Sie server_name manuell im Editor. Auf der Seite eines vorhandenen Hosts findet kein Einsetzen statt.

⚠️ server_name-Validierung beim Speichern

Beim Klicken auf «Erstellen» prüft das Panel, dass jeder Wert in server_name mit dem im Feld «Domainname» eingegebenen Wert endet. Steht im Feld example.com, sind example.com, www.example.com, api.example.com gültig, api.other.com jedoch nicht — und der Host lässt sich nicht speichern.

PHP über PHP-FPM einbinden

In der Startvorlage ist PHP nicht eingebunden: index.php steht zwar in der index-Direktive, ohne einen .php-Handler liefert der Server den Quelltext jedoch als gewöhnlichen Text aus. Damit die Website PHP-Skripte ausführt, ist ein Block location ~ \.php$ { ... } erforderlich, der die Anfragen an den PHP-FPM-Socket weiterleitet.

Das PHP-Modul in BeAdmin unterstützt mehrere Versionen parallel. Jede Version legt einen eigenen Socket unter /var/run/php/php<version>-fpm.sock an — zum Beispiel php8.3-fpm.sock. Die Version für eine konkrete Website finden Sie im PHP-Modul; tragen Sie sie in fastcgi_pass ein.

Bei der Standardinstallation über BeAdmin wird Nginx aus dem offiziellen Repository nginx.org installiert. Das Snippet /etc/nginx/snippets/fastcgi-php.conf ist dort nicht enthalten — es wird nur mit den Paketen nginx-full und nginx-extras aus den nativen Debian- und Ubuntu-Repositories ausgeliefert. Empfohlen ist daher, die FastCGI-Parameter explizit anzugeben:

nginx
location ~ \.php$ {
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}

Wenn auf dem Server Nginx aus den Distributionspaketen installiert ist und das Snippet vorhanden ist, lässt sich das fertige Snippet einbinden:

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

Speichern und Anwenden

Nach dem Klicken auf «Erstellen»:

  • BeAdmin speichert die Konfiguration und aktiviert den virtuellen Host.
  • Liegen die Website-Dateien bereits im Verzeichnis root, ist die Site sofort erreichbar.
  • Vor dem Aktivieren prüft das Panel die Konfiguration mit nginx -t. Bei einem Syntaxfehler oder einer unbekannten Direktive wird der Host nicht erstellt — in der Ecke erscheint eine Benachrichtigung: «Virtueller Host konnte aufgrund eines Konfigurationsfehlers nicht erstellt werden. Weitere Informationen sind in den Logs verfügbar.» Die genauen Fehlerzeilen von nginx -t finden Sie in den Systemlogs des Nginx-Moduls; korrigieren Sie die Konfiguration und klicken Sie erneut auf «Erstellen».

Vorhandenen Host verwalten

  • Um die Roh-Konfiguration eines vorhandenen Hosts zu öffnen, klicken Sie auf seiner Seite in der unteren Leiste auf «Expertenmodus aktivieren». Zurück geht es über die Schaltfläche «Konstruktormodus aktivieren».
  • Die Konfigurationen der beiden Modi werden unterschiedlich gespeichert: Die Konstruktor-Konfiguration ist ein strukturierter Satz Formularfelder in der Panel-Datenbank, die Experten-Konfiguration ist eine Roh-Datei auf der Festplatte. Beim Wechsel vom Expertenmodus in den Konstruktor speichert das Panel die aktuelle Roh-Datei in einem internen Backup, und der Konstruktor zeigt seinen zuletzt gespeicherten Satz Felder.
  • Einen Zwischenentwurf im Expertenmodus merkt sich das Panel nicht: Bei jeder Rückkehr in den Expertenmodus wird die aktuelle Konfiguration vom Server geladen. Wenn Sie die Roh-Konfiguration bearbeitet, in den Konstruktor gewechselt und ohne Klick auf «Speichern» zurückgewechselt haben, sind die Änderungen verloren — der Editor öffnet die zuletzt auf dem Server gespeicherte Version.
  • Einen Host können Sie über das Seitenmenü löschen — über das Mülleimer-Symbol neben seinem Namen. Entfernt werden die Konfigurationsdatei des virtuellen Hosts und seine Logs; die Website-Dateien im Verzeichnis root und die SSL-Zertifikate verbleiben auf dem Server.

BeAdmin © 2025. Alle Rechte vorbehalten.