Nginx. Arbeiten mit virtuellen Hosts
Ein virtueller Host ist die Konfiguration einer einzelnen Website in Nginx: Domain, Port, Stammverzeichnis der Dateien und Regeln zur Verarbeitung von Anfragen. Ein einzelner Nginx-Prozess bedient viele Websites, und jeder Website entspricht ein eigener server-Block in der Konfiguration. In BeAdmin lässt sich ein Host über ein Formular mit Feldern (Konstruktormodus) anlegen und bearbeiten; für nicht standardmäßige Direktiven können Sie in den Expertenmodus wechseln und die Rohkonfiguration bearbeiten. Dieser Artikel behandelt den Konstruktormodus: Anlegen, Bearbeiten, Aktivieren und Deaktivieren sowie Löschen. Die Installation des Nginx-Moduls selbst und die allgemeine Verwaltung des Dienstes werden in einem separaten Artikel beschrieben.
Virtuellen Host anlegen
- Klicken Sie im Seitenmenü des Bereichs Nginx auf «Virtuellen Host erstellen».
- Die Seite öffnet sich im Konstruktormodus. Füllen Sie die Felder aus und klicken Sie auf «Erstellen».
💡 Entwurf im Browser sichern
Wenn Sie das Formular zum Anlegen eines Hosts zu füllen begonnen und es geschlossen haben, ohne auf «Erstellen» zu klicken, merkt sich das Panel Ihre Eingaben — unabhängig davon, ob Sie das Formular im Konstruktor- oder im Expertenmodus ausgefüllt haben. Kehren Sie zum Anlegen des Hosts zurück, erscheint der Dialog: «Sie haben ein unvollständiges Formular. Möchten Sie fortfahren?» Die Schaltfläche «Fortsetzen» lädt die gespeicherten Eingaben zurück in das Formular. Der Entwurf wird verworfen, sobald der Host erfolgreich angelegt oder das Fortsetzen ausdrücklich abgelehnt wird.
Im Folgenden wird beschrieben, was jedes Formularfeld bedeutet.
Domainname
Der Domainname des Hosts ist die Adresse, unter der die Website von außen erreichbar ist. Das Feld nimmt einen Domainnamen oder eine IP-Adresse (IPv4 oder IPv6) an; Ersteres eignet sich für eine gewöhnliche Website, Letzteres für den Fall, dass der Server die Website ohne DNS-Eintrag bereitstellt.
Zwei Hosts mit demselben Paar «Domain + Port» lassen sich nicht anlegen — ist ein solches Paar bereits vergeben, weist das Panel darauf hin und lässt das Speichern nicht zu. So können example.com auf 80 und auf 8080 gleichzeitig betrieben werden, example.com zweimal auf 80 jedoch nicht.
Nach dem Anlegen des Hosts kann der Domainname nicht mehr geändert werden — das Feld wird inaktiv. Soll die Domain wechseln, ist es einfacher, einen neuen Host anzulegen und den alten zu löschen.
Verbindung über HTTPS oder HTTP
Der Umschalter «HTTPS verwenden (Port 443)» / «HTTP verwenden (Port 80)» ändert Protokoll und Port gleichzeitig. Standardmäßig ist HTTPS aktiv — diese Variante ist empfohlen. Bei aktivem HTTPS stellt BeAdmin beim Anlegen des Hosts automatisch ein Let's-Encrypt-Zertifikat aus und verlängert es fortan, solange der Host besteht.
Schlägt die Zertifikatsausstellung fehl, wird der Host mit einem selbstsignierten Platzhalterzertifikat angelegt, und das Panel zeigt die Meldung «Virtueller Host mit selbstsigniertem Zertifikat konfiguriert». Wie die Ausstellung funktioniert und wie sich das Zertifikat manuell neu ausstellen lässt, beschreibt der Artikel Ausstellung eines SSL-Zertifikats; die Aufschlüsselung konkreter Fehlermeldungen findet sich in Behebung von ACME-Fehlern bei der Ausstellung eines SSL-Zertifikats.
Soll die Website auf einem abweichenden Port laufen (interner Dienst, mehrere Websites auf verschiedenen Ports derselben Domain), klicken Sie auf «Port manuell angeben» und tragen Sie die Nummer ein. Erlaubt ist jeder freie Port im Bereich 1–65535.
⚠️ HTTPS nur auf dem Standardport 443
BeAdmin stellt Let's-Encrypt-Zertifikate ausschließlich auf dem Standard-HTTPS-Port 443 aus. Wenn Sie einen abweichenden Port gewählt haben, betreiben Sie die Website über HTTP; ist HTTPS zwingend, binden Sie ein eigenes Zertifikat manuell über den Expertenmodus ein.
Indexdateinamen
Das Feld legt fest, welche Dateien Nginx bei einer Anfrage an ein Verzeichnis ausliefert — etwa beim Aufruf von https://example.com/. Voreingestellt sind index.html index.htm. Die Namen werden in einer Zeile durch Leerzeichen getrennt in der Reihenfolge ihrer Priorität angegeben.
Die Zeichen ?, :, ,, ; sind im Namen nicht erlaubt — das Panel weist sie zurück und zeigt einen Hinweis.
Enthält der Host eine Location mit PHP, wird index.php automatisch an den Anfang der Liste gesetzt — eine separate Eintragung ist nicht nötig. Wird die PHP-Location entfernt, verschwindet index.php ebenso automatisch aus der Liste.
Pfad zu den Dateien
Der Stammordner mit den Website-Dateien — der Wert, der in der Nginx-Konfiguration in die Direktive root einfließt. Das Verzeichnis lässt sich über den Verzeichnisauswahldialog wählen oder von Hand eintragen.
Das Verzeichnis muss auf dem Server existieren und vom Nginx-Prozess lesbar sein, andernfalls antwortet die Website mit einem 403- oder 404-Fehler. Sollen die Dateien später eingefügt werden, legen Sie das leere Verzeichnis vorab an.
Locations
Locations sind location-Blöcke in der Nginx-Konfiguration, die festlegen, wie Anfragen an verschiedene URL-Pfade behandelt werden: Auslieferung statischer Inhalte, Weitergabe an PHP, Proxying an einen anderen Dienst oder Weiterleitungen. Im Block «Extraoptionen» unterhalb der Hauptfelder findet sich die Schaltfläche «Location hinzufügen», die eine Vorlage zur Auswahl anbietet:
- Stamm-Location — verarbeitet Anfragen an den Website-Stamm; in jedem Host vorhanden.
- Einfach — eine statische Antwort oder einfache Dateiauslieferung nach Pfad.
- PHP (FastCGI) — Weitergabe der Anfragen an PHP-FPM.
- Reverse-Proxy —
proxy_passan einen Upstream (zum Beispiel Apache, eine Node-Anwendung oder einen Docker-Container).
Einzelheiten zu jeder Vorlage sowie zum Hinzufügen und Entfernen von Locations stehen im Artikel Nginx. Locations für einen virtuellen Host konfigurieren.
Nginx und Apache zusammen
Sind beide Module auf dem Server installiert, ist der Aufbau stets derselbe: Nginx steht vorne und nimmt Anfragen aus dem Internet auf 80/443 entgegen, Apache arbeitet als Backend auf den lokalen Ports 127.0.0.1:8808 (HTTP) und 127.0.0.1:8843 (HTTPS). PHP, .htaccess und Apache-Module werden auf der Apache-Seite verarbeitet; Nginx leitet Anfragen weiter und liefert bei Bedarf statische Inhalte direkt aus.
Die automatische Konfiguration funktioniert nur in eine Richtung. Wird Apache installiert, wenn Nginx bereits vorhanden ist, wählt BeAdmin für Apache selbständig die Backend-Listener 127.0.0.1:8808/8843. War zuerst Apache installiert und Nginx wird darüber hinzugefügt, erscheint auf der Seite des Nginx-Moduls ein Banner mit einem Konflikthinweis, und Apache muss manuell in den Backend-Modus überführt werden: das Apache-Modul im Backend-Modus (auf 127.0.0.1:8808/8843) neu installieren.
In einem virtuellen Nginx-Host genügt für diese Verknüpfung eine einzige Location vom Typ «Reverse-Proxy» mit der Adresse http://127.0.0.1:8808 — TLS wird auf Nginx terminiert, sodass ein Zugriff auf 8843 in der Regel nicht nötig ist. Wie eine solche Location eingerichtet wird, beschreibt der Artikel Nginx. Locations für einen virtuellen Host konfigurieren. Zur Apache-Einrichtung siehe Apache. Schnellstart.
Virtuellen Host bearbeiten
Öffnen Sie einen Host aus der Seitenleiste des Nginx-Bereichs — es erscheint dasselbe Formular wie beim Anlegen, mit zwei Unterschieden:
- Das Feld «Domainname» ist inaktiv — die Domain ändert sich nach dem Anlegen nicht mehr.
- Der Port wird stets als eigenes Feld angezeigt (ohne HTTPS-Umschalter) und lässt sich direkt ändern. Wird 443 gesetzt, behandelt
BeAdminden Host als HTTPS-Site und stellt beim Speichern ein Let's-Encrypt-Zertifikat aus.
Um Änderungen zu speichern, klicken Sie auf «Aktualisieren» — die Schaltfläche ist nur bei nicht gespeicherten Änderungen aktiv. Wie beim Anlegen prüft das Panel die Konfiguration vor dem Anwenden und behält bei einem Fehler die zuletzt funktionierende Version bei.
Host aktivieren und deaktivieren
Neben der Speichern-Schaltfläche befindet sich ein Umschalter für den Hoststatus:
- Auf der Seite zum Anlegen — «Virtuellen Host aktivieren» / «Virtuellen Host deaktivieren» (Wahl des Anfangsstatus).
- Auf der Seite eines bestehenden Hosts — «Host aktiviert» / «Host deaktiviert» (aktueller Status; wird über die Schaltfläche «Aktualisieren» geändert und gespeichert).
Ist ein Host deaktiviert, wird sein server-Hauptblock aus der Konfiguration entfernt — die Website antwortet nicht mehr auf Anfragen, der Hosteintrag und seine Einstellungen bleiben in BeAdmin jedoch erhalten, und der Host kann jederzeit wieder aktiviert werden. Das SSL-Zertifikat wird in dieser Zeit weiterhin automatisch verlängert. Nach erneutem Aktivieren ist die Website ohne weitere Schritte wieder über HTTPS erreichbar.
Virtuellen Host löschen
Ein Host lässt sich über das Papierkorbsymbol neben ihm in der Seitenliste löschen. Um ein versehentliches Löschen auszuschließen, verlangt das Panel zur Bestätigung die Eingabe des Hostnamens.
Beim Löschen eines Hosts werden die Nginx-Konfigurationsdatei und die zugehörigen Logs entfernt. Das Verzeichnis mit den Website-Dateien (das im Feld «Pfad zu den Dateien» angegebene) bleibt erhalten — das schützt vor Datenverlust beim versehentlichen Löschen eines Hosts. Wird das Verzeichnis nicht mehr benötigt, entfernen Sie es manuell.
Expertenmodus
Reicht das Standard-Konstruktorformular nicht aus — etwa wenn Sie ein eigenes try_files, ein abweichendes access_log, zusätzliche fastcgi_param oder Rate-Limiting benötigen —, wechseln Sie über die Schaltfläche «Expertenmodus aktivieren» in der unteren Leiste des Formulars in den Expertenmodus. Der Rückweg führt über die Schaltfläche «Konstruktormodus aktivieren».
Einzelheiten zum Expertenmodus — Startvorlage, Wechsel zwischen den Modi ohne Verlust der Einstellungen, manuelle Anbindung von PHP-FPM — finden sich im Artikel Nginx. Virtuelle Hosts im Expertenmodus.
Weiterführende Links
- Nginx. Locations für einen virtuellen Host konfigurieren — Location-Vorlagen, allgemeine Parameter, Proxying.
- Nginx. Virtuelle Hosts im Expertenmodus — Rohkonfiguration, Startvorlage, manuelle Anbindung von PHP-FPM.
- Ausstellung eines SSL-Zertifikats — wie das Panel Let's Encrypt ausstellt und wie sich das Zertifikat manuell neu ausstellen lässt.
- Behebung von ACME-Fehlern bei der Ausstellung eines SSL-Zertifikats — was zu tun ist, wenn Let's Encrypt nicht ausgestellt hat.
- Apache. Schnellstart — Apache im Verbund mit Nginx einrichten.
- Offizielle Nginx-Dokumentation — Referenz zu Direktiven und Modulen.