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 Builder-Modus 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 mittry_files $uri $uri/ /index.html;oder für WordPress mittry_files $uri $uri/ /index.php?$args;; - abweichende
access_log/error_log— eigenes Format, eigener Pfad oder deaktivierte Logs; proxy_passan 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 Builder-Modus.
Den Expertenmodus öffnen
- Klicken Sie im Seitenmenü des Bereichs Nginx auf „Virtuellen Host erstellen“.
- Die Erstellungsseite öffnet sich im Builder-Modus. Klicken Sie in der unteren Leiste auf „Expertenmodus aktivieren“.
- Es erscheint der Dialog „In den Expertenmodus wechseln“. Klicken Sie auf „Fortfahren“.
- Es öffnet sich der Editor für die Roh-Konfiguration mit Syntaxhervorhebung und einer Startvorlage.
- 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.
- Klicken Sie auf „Erstellen“.
⚠️ Moduswechsel im Erstellungsformular
Der Rückweg in den Builder-Modus führt über die Schaltfläche „Builder-Modus 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 Builder-Modus werden die Formularfelder wiederhergestellt — die im Builder-Modus 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 Builder-Modus 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
# 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 in443 ssl;und ergänzen Siessl_certificateundssl_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 Sieexample.comdurch Ihre Domain. Das Verzeichnis muss existieren und für den Benutzernginxlesbar 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 Sieindex.phpzuerst 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=404durch/index.html. Für WordPress durch/index.php?$args.access_logunderror_log— Pfade zu den Logs. Es ist praktisch, sie unter/var/log/nginx/<domain>.access.logund/var/log/nginx/<domain>.error.logzu 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“ (auf der Seite eines bestehenden Hosts — „Aktualisieren“) 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:
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:
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“ (auf der Seite eines bestehenden Hosts — „Aktualisieren“):
BeAdminspeichert 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 vonnginx -tfinden Sie in den Systemlogs des Nginx-Moduls; korrigieren Sie die Konfiguration und klicken Sie erneut auf „Erstellen“ (auf der Seite eines bestehenden Hosts — „Aktualisieren“).
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 „Builder-Modus aktivieren“.
- Die Konfigurationen der Modi werden unterschiedlich gespeichert: Die Builder-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 Builder-Modus speichert das Panel die aktuelle Roh-Datei in einem internen Backup, und der Builder-Modus 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 Builder-Modus gewechselt und ohne Klick auf „Aktualisieren“ 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
rootund die SSL-Zertifikate verbleiben auf dem Server.
Weiterführende Links
- Nginx. Arbeiten mit virtuellen Hosts — Erstellen eines virtuellen Hosts im Builder-Modus, Beschreibung der Formularfelder.
- Nginx. Schnellstart — Installation des Moduls und Aufsetzen der ersten Website.
- Eine PHP-Site auf Nginx, PHP und MySQL bereitstellen — schrittweises Szenario mit einem echten CMS.
- Ausstellung eines SSL-Zertifikats — manuelle Let's-Encrypt-Ausstellung im Expertenmodus.
- Behebung von ACME-Fehlern bei der Ausstellung eines SSL-Zertifikats — für HTTPS-Hosts.
- Offizielle Nginx-Dokumentation — Referenz zu Direktiven und Modulen.