Website-Suche

So schützen Sie Webverzeichnisse in Nginx mit einem Passwort


Manager von Webprojekten müssen ihre Arbeit oft auf die eine oder andere Weise schützen. Oft werden Leute gefragt, wie sie ihre Website mit einem Passwort schützen können, während sie sich noch in der Entwicklung befindet.

In diesem Tutorial zeigen wir Ihnen eine einfache, aber effektive Technik, wie Sie ein passwortgeschütztes Webverzeichnis erstellen, wenn Sie Nginx als Webserver ausführen.

Falls Sie einen Apache-Webserver verwenden, können Sie unseren Leitfaden zum Passwortschutz eines Webverzeichnisses lesen:

  1. Schützen Sie Webverzeichnisse in Apache mit einem Passwort

Anforderungen

Um die Schritte in diesem Tutorial ausführen zu können, benötigen Sie Folgendes:

  • Nginx-Webserver installiert
  • Root-Zugriff auf den Server

Schritt 1: Benutzer und Passwort erstellen

1. Um unser Webverzeichnis mit einem Passwort zu schützen, müssen wir die Datei erstellen, die unseren verschlüsselten Benutzernamen und unser Passwort enthält.

Wenn Sie Apache verwenden, können Sie das Dienstprogramm „htpasswd“ verwenden. Wenn Sie dieses Dienstprogramm auf Ihrem System installiert haben, können Sie mit diesem Befehl die Passwortdatei generieren:

htpasswd -c /path/to/file/.htpasswd username

Wenn Sie diesen Befehl ausführen, werden Sie aufgefordert, ein Passwort für den oben genannten Benutzer festzulegen. Anschließend wird die Datei .htpasswd im angegebenen Verzeichnis erstellt.

2. Wenn Sie dieses Tool nicht installiert haben, können Sie die Datei .htpasswd manuell erstellen. Die Datei sollte die folgende Syntax haben:

username:encrypted-password:comment

Welchen Benutzernamen Sie verwenden, hängt von Ihnen ab. Wählen Sie, was Ihnen gefällt.

Der wichtigere Teil ist die Art und Weise, wie Sie das Passwort für diesen Benutzer generieren.

Schritt 2: Verschlüsseltes Passwort generieren

3. Um das Passwort zu generieren, verwenden Sie die in Perl integrierte „crypt“-Funktion.

Hier ist ein Beispiel für diesen Befehl:

perl -le 'print crypt("your-password", "salt-hash")'

Ein Beispiel aus dem wirklichen Leben:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

Öffnen Sie nun eine Datei und geben Sie Ihren Benutzernamen und die generierte Zeichenfolge ein, getrennt durch Semikolon.

Hier ist, wie:

vi /home/tecmint/.htpasswd

Geben Sie Ihren Benutzernamen und Ihr Passwort ein. In meinem Fall sieht es so aus:

tecmint:1xV2Rdw7Q6MK.

Speichern Sie die Datei, indem Sie „Esc“ und anschließend „:wq“ drücken.

Schritt 3: Nginx-Konfiguration aktualisieren

4. Öffnen und bearbeiten Sie nun die Nginx-Konfigurationsdatei, die mit der Site verknüpft ist, an der Sie arbeiten. In unserem Fall verwenden wir die Standarddatei unter:

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

In unserem Beispiel schützen wir das Stammverzeichnis für Nginx mit einem Passwort: /usr/share/nginx/html.

5. Fügen Sie nun den folgenden Abschnitt mit zwei Zeilen unter dem Pfad hinzu, den Sie schützen möchten.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Speichern Sie nun die Datei und starten Sie Nginx neu mit:

systemctl restart nginx
OR
service nginx restart

6. Kopieren Sie nun diese IP-Adresse und fügen Sie sie in Ihren Browser ein. Sie sollten nun nach einem Passwort gefragt werden:

Das ist es! Ihr Hauptwebverzeichnis ist jetzt geschützt. Wenn Sie den Passwortschutz auf der Site entfernen möchten, entfernen Sie einfach die beiden Zeilen, die Sie gerade zur Datei .htpasswd hinzugefügt haben, oder verwenden Sie den folgenden Befehl, um den hinzugefügten Benutzer aus einer Passwortdatei zu entfernen.

htpasswd -D /path/to/file/.htpasswd username