Einfache Verwaltung virtueller Hosts mit NGINX Proxy Manager

Das Verwalten von Proxies und Virtuellen Hosts (VHosts) über NGINX-Konfigurationsdateien kann mühsam werden, wenn die Anzahl der virtuellen Hosts und Webdienste zunimmt. Wie können Sie den Prozess vereinfachen? Mit dem NGINX Proxy Manager (NPM).

Lesen Sie weiter und lernen Sie, virtuelle Hosts mit der NGINX Proxy Manager-Webkonsole zu erstellen, zu verwalten und abzusichern.

Voraussetzungen

In diesem Tutorial wird eine praktische Demonstration durchgeführt. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:

Einrichten des NGINX Proxy Managers

Der NGINX Proxy Manager ist kein Paket, das Sie auf Ihrem Betriebssystem installieren. Stattdessen ist NPM eine App, die Sie in Docker bereitstellen – daher sind Docker und Docker Compose die primären Anforderungen.

Befolgen Sie die untenstehenden Schritte, um mit dem Einrichten Ihres NGINX Proxy Managers zu beginnen.

1. Melden Sie sich über SSH oder die Desktop-Umgebung, falls vorhanden, auf Ihrem Linux-Server an.

2. Erstellen und öffnen Sie eine YAML-Datei namens docker-compose.yml mit Ihrem bevorzugten Texteditor, hier wird vi verwendet.
3. Kopieren Sie den folgenden Code in den Editor. Dieser Code enthält die Anweisungen zum Herunterladen und Einrichten des neuesten nginx-proxy-manager-Images. Speichern und schließen Sie die Datei, um zur Befehlszeile zurückzukehren.

vi docker-compose.yml
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped # Stellen Sie sicher, dass der Proxy-Manager Abstürze überlebt
    ports:
      # Erlauben Sie, dass die entsprechenden Container-Ports vom Hostrechner aus zugänglich sind
      - '80:80'
      - '81:81' # Port für das Admin-Panel
      - '443:443'
    volumes:
      # Ordnen Sie die folgenden Container-Verzeichnisse den entsprechenden Verzeichnissen auf dem Host zu
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. Führen Sie docker-compose aus, um den Container im Hintergrund gemäß den angegebenen Anweisungen hochzufahren.

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass der Container läuft.

docker ps

Sie sollten einen laufenden Prozess sehen, der dem Proxy-Manager-Container entspricht, wie im untenstehenden Screenshot, wenn alles in Ordnung ist.

Listing running Docker containers

Zugriff auf das Administrations-Panel

Der NGINX Proxy Manager sollte jetzt ausgeführt werden. Sie können nun auf das NPM-Admin-Panel zugreifen, um die erste Admin-Benutzerkonfiguration durchzuführen.

1. Öffnen Sie Ihr Browserfenster und navigieren Sie zu http://:admin-ui-port>. Aus Bequemlichkeit verwendet dieses Tutorial implizit localhost anstelle einer IP-Adresse, das heißt, http://localhost:81, um das Admin-Panel zu starten.

2. Melden Sie sich mit den standardmäßigen Anmeldeinformationen an: E-Mail-Adresse [email protected] und Passwort changeme.

Logging in for the first time

3. Ändern Sie das Standardbenutzerkonto nach Belieben. Dieses Tutorial behält den vollständigen Namen und Spitznamen bei und ändert nur die E-Mail-Adresse in [email protected]. Klicken Sie auf Speichern, um die Benutzerdetails zu speichern.

Changing admin user default credentials

4. Geben Sie ein neues Passwort für den Benutzer im Bereich „Passwort ändern“ wie unten gezeigt ein. Geben Sie ein Passwort mit acht oder mehr Zeichen ein und klicken Sie auf Speichern.

Changing the default password

Sie sollten die von Ihnen vorgenommenen Änderungen am Benutzerkonto unten sehen.

Viewing the user list in NGINX Proxy Manager

Bereitstellen des Webservers

Jetzt, da Sie die erste Einrichtung durchgeführt haben, ist Ihr nächster Schritt das Starten eines Webservers für Ihren virtuellen Host. Befolgen Sie die Schritte in diesem Abschnitt, um schnell einen Apache-Webservice-Container mithilfe von Docker Compose zu starten.

Öffnen Sie die Datei docker-compose.yml, die Sie zuvor in Ihrem Texteditor erstellt haben. Fügen Sie den folgenden Codeausschnitt am Ende der Datei docker-compose.yml an

Der Vorteil der Verwendung derselben Datei besteht darin, dass Sie das vorhandene Container-Netzwerk ändern, indem Sie einen Container auf Basis von httpd unter dem Namen app2 registrieren, anstatt es in einem separaten Netzwerk zu haben.

app2:
    #Benutzerdefinierter Name zur internen Referenz für den Container. Wird für die Netzwerkkommunikation zwischen Containern verwendet
    image: 'httpd:latest'
    restart: unless-stopped

Der Inhalt der Datei sollte wie auf dem Screenshot unten aussehen. Speichern Sie die Datei und beenden Sie den Editor.

Adding a web server deployment directive

Führen Sie docker-compose aus, um den Container im Hintergrund zu starten (-d).

docker-compose up -d

Sie sollten eine ähnliche Rückmeldung wie auf dem Screenshot unten erhalten, die die Erstellung des zweiten Containers bestätigt.

Creating and starting the Web server with Docker Compose

Erstellen eines neuen virtuellen Hosts

Sie haben jetzt einen laufenden Webdienst. Dieser Abschnitt soll den Zugriff auf den Webserver über die veröffentlichten Ports des NGINX Proxy Managers ermöglichen.

1. Melden Sie sich im Admin-Panel von NGINX Proxy Manager an.

2. Klicken Sie auf Hosts —> Proxy-Hosts.

Creating a VHOST: Opening the Proxy Host card

3. Klicken Sie auf „Proxy-Host hinzufügen“, um die Erstellung eines virtuellen Hosts für den Webserver zu starten.

Creating a VHOST: Adding a Proxy Host

4. Füllen Sie das Formular Neuer Proxy-Host mit den folgenden Details aus, um den virtuellen Host einzurichten.

  • Domainnamen: Die Domainnamen, unter denen Ihr Webserver erreichbar sein wird. In diesem Beispiel wird die Domain testweb.com verwendet.
  • Vorwärts Hostname / IP: Der Hostname oder die IP-Adresse des Webservers. Da dieses Tutorial Docker Compose verwendet hat, um die Container einzurichten, ist es ausreichend, app2 zu verwenden. Geben Sie den Namen ein, den Sie in der Datei docker-compose.yml angegeben haben.
  • Vorwärts Port: Der Port, auf dem der Webserver auf Anfragen hört. In diesem Fall verwenden Sie Port 80, welcher der standardmäßig freigegebene Port für Apache httpd-Container ist.
  • Blockiere gängige Exploits: Als Pluspunkt können Proxies, die mit NPM eingerichtet wurden, gängige Exploits blockieren. Aktivieren Sie diese Option.
  • Zugriffsliste: Vordefinierte Listen zur Steuerung des Zugriffs auf den Webserver hinter einem Proxy. Für dieses Tutorial lassen Sie die Wahl auf Öffentlich zugänglich, um sicherzustellen, dass Sie über den Proxy auf den Webserver zugreifen können.

Das Formular auf Ihrem Bildschirm sollte dem untenstehenden Screenshot entsprechen. Klicken Sie nach dem Ausfüllen des Formulars auf Speichern.

Adding the Proxy Host details

Sie haben jetzt einen Proxy-Host in der Liste.

List of proxy hosts

5. Gehen Sie abschließend zu der URL des virtuellen Hosts in einem neuen Browser-Tab oder -Fenster. Für dieses Tutorial lautet die URL http://testweb.com. Wenn der virtuelle Host ordnungsgemäß funktioniert, sollten Sie die Standard-Startseite sehen.

Accessing the Webserver via the Proxy

Bereitstellung von SSL-Zertifikaten

Sie haben den Webserver bereitgestellt und bestätigt, dass er läuft. Zu diesem Zeitpunkt verfügt die Website jedoch noch nicht über ein SSL-Zertifikat. Während interne private Websites möglicherweise ohne SSL-Zertifikat in Ordnung sind, sollte dies bei der Bereitstellung öffentlicher Websites nicht der Fall sein.

Um sicherzustellen, dass Ihre Website-Verbindungen verschlüsselt sind, werden Sie als Nächstes ein SSL-Zertifikat auf Ihren virtuellen Host installieren. Keine Sorge; Sie werden dies über den NGINX Proxy Manager tun. Sie sollten jedoch bereits ein vorhandenes PEM-Format SSL-Zertifikat und einen Zertifikatsschlüssel haben.

1. Klicken Sie auf die Registerkarte SSL-Zertifikate im Admin-Panel des NGINX Proxy Manager.

Opening the SSL Certificates tab

2. Klicken Sie oben rechts auf Zertifikate hinzufügen —> Benutzerdefiniert.

Adding a custom SSL certificate

Als Alternative zu einem benutzerdefinierten Zertifikat können Sie direkt und während des Fluges ein Let’s Encrypt Zertifikat anfordern, indem Sie Let’s Encrypt auswählen. Dies erfordert jedoch, dass Ihre Website und DNS-Eintrag öffentlich sind. Andernfalls schlägt der Zertifikatserwerb fehl.

3. Füllen Sie das Formular zum Hinzufügen eines benutzerdefinierten Zertifikats wie folgt aus

  • Name: Ein benutzerfreundlicher Name für das Zertifikat im Admin-Panel. Dieses Tutorial verwendet den Namen Testweb Cert.
Provisioning SSL Certificates: Naming the certificate
  • Zertifikatsschlüssel: Dieser Schlüssel wird mit der Zertifikatsdatei geliefert, die Sie als Anforderung in diesem Tutorial generiert haben.

Klicken Sie auf Durchsuchen und navigieren Sie zur Schlüsseldatei.

Provisioning SSL Certificates: Selecting the key file

Doppelklicken Sie auf die Schlüsseldatei. In diesem Tutorial lautet der Zertifikatsschlüssel mytesthttpd.key.

Provisioning SSL Certificates: Selecting the key file
  • Zertifikat: Die Zertifikatsdatei selbst, entweder im .crt- oder .pem-Format.

Klicken Sie auf Durchsuchen und navigieren Sie zu Ihrem Zertifikat in Ihrem Datei-Explorer.

Provisioning SSL Certificates: Selecting the certificate file

Doppelklicken Sie auf die Zertifikatsdatei, um sie zu öffnen. In diesem Tutorial wird die Schlüsseldatei als mytesthttpd.pem bezeichnet.

Provisioning SSL Certificates: Selecting the certificate file

4. Sobald Sie alle drei Felder ausgefüllt haben, sollte Ihr Formular wie im folgenden Screenshot aussehen. Klicken Sie auf Speichern, um das benutzerdefinierte Zertifikat zu übermitteln.

In diesem Tutorial wird kein Zwischenzertifikat verwendet. Ignorieren Sie dieses Feld vorerst.

Saving the SSL certificate

5. Klicken Sie nun auf Hosts —> Proxy-Hosts.

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

6. Klicken Sie auf das Kebab-Menüsymbol und wählen Sie Bearbeiten. Beachten Sie, dass in diesem Stadium die SSL-Spalte nur „Nur HTTP“ anzeigt.

Editing a proxy Host

7. Wählen Sie im Fenster „Proxy-Host bearbeiten“ den SSL-Tab wie unten gezeigt aus. Wählen Sie aus dem Dropdown-Menü unter SSL-Zertifikat das von Ihnen bereitgestellte Zertifikat aus. In diesem Tutorial ist es Testweb Cert, wie im Screenshot unten.

Selecting a certificate for a Proxy Host

8. Wählen Sie das zuvor hinzugefügte Zertifikat aus dem Dropdown-Menü unter SSL-Zertifikat aus. Wie unten zu sehen ist, ist der Zertifikatname „Testweb Cert“.

Selecting a certificate for a Proxy Host

9. Aktivieren Sie alle verfügbaren erweiterten SSL-Optionen, wie im folgenden Screenshot zu sehen, und klicken Sie auf Speichern.

Die Option „Force SSL“ erzwingt oder aktualisiert alle Verbindungen auf HTTPS, auch wenn der Client ursprünglich versucht hat, auf die HTTP-URL zuzugreifen.

Enabling enhanced SSL features

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.

Sie werden feststellen, dass sich der Wert in der SSL-Spalte von „Nur HTTP“ auf „Benutzerdefiniert“ geändert hat.

Confirming changes in the SSL setting for a Proxy Host

10. Öffnen Sie abschließend einen Browser-Tab und navigieren Sie erneut zu Ihrer virtuellen Host-Domain. In diesem Tutorial ist es http://testweb.com. Die Verbindung sollte automatisch auf HTTPS aktualisiert werden.

Testing HTTPS access with a browser

Herzlichen Glückwunsch! Sie haben die Bereitstellung eines gesicherten virtuellen Hosts mit dem NGINX Proxy Manager abgeschlossen.

Hinzufügen von NGINX Proxy Manager-Benutzern

Wenn Sie mit einem Team arbeiten oder erwarten, dass jemand anderes die virtuellen Hosts in NPM verwaltet, müssen Sie Benutzerzugriff bereitstellen. In diesem Abschnitt erweitern Sie das NPM-Management, insbesondere in Teamumgebungen, indem Sie einen Benutzer erstellen und Rollen und Berechtigungen zuweisen.

1. Klicken Sie auf Benutzer auf der Startseite des Administrationsbereichs.

Extending NPM with Users: Opening the Users tab

2. Klicken Sie in der rechten oberen Ecke der Karte Benutzer auf Benutzer hinzufügen.

Adding a user

3. Geben Sie den vollständigen Namen des Benutzers (Testbenutzer), den Spitznamen (testuser) und die E-Mail-Adresse ([email protected]) in die entsprechenden Felder ein und klicken Sie auf Speichern.

Dieser Benutzer, den Sie erstellen, wird kein vollständiger Administrator sein, daher aktivieren Sie nicht die Administratorrolle. Sie werden stattdessen benutzerdefinierte Berechtigungen zuweisen. Klicken Sie auf Speichern, um den neuen Benutzer hinzuzufügen.

Adding user particulars

4. Legen Sie die Berechtigungen fest, die Sie dem Benutzer geben möchten. Für dieses Tutorial wird der neue Benutzer folgende Berechtigungseinstellungen haben.

  • Kann nur Elemente anzeigen, die vom Benutzer erstellt wurden.
  • Kann Proxy-Hosts erstellen, bearbeiten und löschen.
  • Kann Weiterleitungs-Hosts erstellen, bearbeiten und löschen.
  • Kann 404-Hosts nicht sehen.
  • Kann Streams nicht sehen.
  • Kann Zugriffslisten anzeigen.
  • Kann SSL-Zertifikate erstellen, bearbeiten und löschen.

Das Berechtigungsset sollte dem untenstehenden Screenshot ähnlich sehen. Klicken Sie auf Speichern, um das Hinzufügen des neuen Benutzers abzuschließen.

Saving the user’s permissions

5. Klicken Sie nun auf das Kebab-Menü des neuen Benutzers und dann auf Als Benutzer anmelden. Dieser Schritt wechselt den aktuellen Benutzerkontext zu Testbenutzer.

Signing in as the new user

6. Erkunden Sie das Admin-Panel aus der Perspektive eines neuen Benutzers. Gemäß den Berechtigungen dieses Benutzers sollten Sie weniger Registerkarten und Ressourcen sehen.

Confirming access permissions

Schlussfolgerung

Herzlichen Glückwunsch zum Abschluss dieses Tutorials zum NGINX Proxy Manager. Sie haben gelernt, virtuelle Hosts zu verwalten und die Zusammenarbeit zu ermöglichen, indem Sie Benutzer über die GUI erstellen! Glauben Sie, dass Sie jemals wieder zur Verwaltung von NGINX-Virtual-Hosts durch manuelles Bearbeiten von Konfigurationsdateien zurückkehren werden?

Hier ist eine Idee, um Ihr Wissen weiter zu testen. Warum lesen Sie nicht weiter über Wie man NGINX-Subdomains oder mehrere Domains bedient . Aber anstatt den manuellen Konfigurationen zu folgen, wenden Sie das Gelernte an und implementieren und konfigurieren Sie die virtuellen Hosts mithilfe des NGNIX Proxy Managers.

Source:
https://adamtheautomator.com/nginx-proxy-manager/