GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einfache HTTP-Authentifizierung mit Nginx

Dieses Tutorial zeigt, wie Sie die grundlegende HTTP-Authentifizierung mit Nginx verwenden können, um Verzeichnisse auf Ihrem Server oder sogar eine ganze Website mit einem Passwort zu schützen. Dies ist das Nginx-Äquivalent zur grundlegenden HTTP-Authentifizierung auf Apache mit .htaccess /.htpasswd.

1 Vorbemerkung

Ich verwende hier die Website www.example.com mit dem Dokumentenstammverzeichnis /var/www/www.example.com/web/ und der Nginx vhost-Konfigurationsdatei /etc/nginx/sites-enabled/www.example.com. vhost. Das Verzeichnis, das ich mit einem Passwort schützen möchte, ist /var/www/www.example.com/web/test/.

2 Erstellung der Passwortdatei

Wir benötigen eine Passwortdatei, in der Benutzer, die sich anmelden können sollen, mit ihren Passwörtern (in verschlüsselter Form) aufgelistet sind. Um eine solche Passwortdatei zu erstellen, können wir entweder das htpasswd-Tool von Apache verwenden, oder wir verwenden das Python-Skript von http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

2.1 Verwenden des htpasswd-Befehls von Apache

Wenn Sie den htpasswd-Befehl von Apache verwenden möchten, überprüfen Sie, ob er auf Ihrem System vorhanden ist:

which htpasswd
[email protected]:~# which htpasswd
/usr/bin/htpasswd
[email protected]:~#

Wenn Sie eine Ausgabe wie die obige erhalten, ist alles in Ordnung - htpasswd ist bereits installiert. Wenn der Befehl ohne Ausgabe zurückkehrt, existiert htpasswd nicht auf Ihrem System und Sie müssen es installieren. Unter Debian/Ubuntu ist es Teil des Pakets apache2-utils, das wir wie folgt installieren können:

apt-get -y install apache2-utils

Ich möchte jetzt die Passwortdatei /var/www/www.example.com/.htpasswd erstellen und darin den Benutzer falko speichern (Sie können der Passwortdatei einen beliebigen Namen geben - es muss nicht .htpasswd heißen; ich habe es einfach .htpasswd genannt, weil Passwortdateien unter Apache so benannt sind):

htpasswd -c /var/www/www.example.com/.htpasswd falko

Sie werden nach einem Passwort für den Benutzer falko gefragt. Bitte beachten Sie, dass der Schalter -c dafür sorgt, dass die Datei von Grund auf neu erstellt wird; wenn es vorher nicht existierte, wird es erstellt; Wenn es vorher existierte, wird es mit einem neuen überschrieben, und alle Benutzer aus der alten Datei gehen verloren! Wenn Sie also einen weiteren Benutzer hinzufügen möchten, ohne alle vorhandenen Benutzer zu löschen, verwenden Sie den Befehl htpasswd ohne den Schalter -c:

htpasswd /var/www/www.example.com/.htpasswd till

Der letzte Befehl fügt den Benutzer till zu /var/www/www.example.com/.htpasswd hinzu, sodass wir jetzt die Benutzer falko und till darin haben.

2.2 Verwenden des Python-Skripts htpasswd.py

Wenn Sie den htpasswd-Befehl von Apache nicht verwenden möchten oder können, können Sie das Python-Skript von http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

verwenden

Wir laden es nach /usr/local/bin herunter und machen es wie folgt ausführbar:

cd /usr/local/bin
wget http://trac.edgewall.org/export/14464/trunk/contrib/htpasswd.py
chmod 755 /usr/local/bin/htpasswd.py

Ich möchte jetzt die Passwortdatei /var/www/www.example.com/.htpasswd erstellen und darin den Benutzer falko speichern (Sie können der Passwortdatei einen beliebigen Namen geben - es muss nicht .htpasswd heißen; ich habe es einfach .htpasswd genannt, weil Passwortdateien unter Apache so benannt sind):

htpasswd.py -c -b /var/www/www.example.com/.htpasswd falko falkossecret

Bitte ersetzen Sie falkosecret durch ein Passwort für den Benutzer falko. Bitte beachten Sie, dass der Schalter -c dafür sorgt, dass die Datei von Grund auf neu erstellt wird; wenn es vorher nicht existierte, wird es erstellt; Wenn es vorher existierte, wird es mit einem neuen überschrieben, und alle Benutzer aus der alten Datei gehen verloren! Wenn Sie also einen weiteren Benutzer hinzufügen möchten, ohne alle vorhandenen Benutzer zu löschen, verwenden Sie den Befehl htpasswd.py ohne den Schalter -c:

htpasswd.py -b /var/www/www.example.com/.htpasswd till tillssecret

Der letzte Befehl fügt den Benutzer till zu /var/www/www.example.com/.htpasswd hinzu, sodass wir jetzt die Benutzer falko und till darin haben.

3 Konfigurieren von Nginx

Jetzt, da wir unsere Passwortdatei an Ort und Stelle haben, müssen wir sie nur noch zu unserer Nginx-vhost-Konfiguration in /etc/nginx/sites-enabled/www.example.com.vhost im Server-Container {} hinzufügen.

nano /etc/nginx/sites-enabled/www.example.com.vhost

Da ich das Testverzeichnis im Dokumentenstamm mit einem Passwort schützen möchte, verwende ich hier location /test {} (um die gesamte Website mit einem Passwort zu schützen, würden Sie location / {} verwenden):

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;
[...]
       location /test {
                auth_basic "Restricted";
                auth_basic_user_file /var/www/www.example.com/.htpasswd;
       }
[...]
}

Nginx danach neu laden:

service nginx reload

Das ist es! Sie können jetzt in einem Browser zu Ihrem Testverzeichnis gehen (http://www.example.com/test), und Sie sollten nach einem Benutzernamen und einem Passwort gefragt werden:

Wenn Sie den richtigen Benutzernamen und das richtige Passwort eingeben, erhalten Sie Zugriff:

Andernfalls wird die Fehlermeldung 401 Autorisierung erforderlich angezeigt:

  • Nginx:http://nginx.org/
  • Nginx-Wiki:http://wiki.nginx.org/
  • htpasswd.py Python-Skript:http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py

Über den Autor

Falko Timme ist Der Besitzer von Timme Hosting (ultraschnelles Nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Kernentwickler von ISPConfig (seit 2000). Er hat auch zum O'Reilly-Buch "Linux System Administration" beigetragen.


Linux
  1. So installieren Sie den HTTP-Git-Server mit Nginx unter Ubuntu 16.04

  2. Dateiberechtigungen unter Linux mit Beispiel

  3. Grundlegende Nginx-Fehlerbehebung

  4. nginx:[emerg] unbekannte Direktive in /etc/nginx/sites-enabled/example.com:3

  5. Richtiger Umgang mit relativen URLs mit einem Reverse-Proxy

So installieren Sie TYPO3 8.1 mit Nginx (LEMP) auf Ubuntu 16.04

So verwenden Sie GeoIP mit Nginx unter Ubuntu 16.04

Behebung von HTTP Basic:Zugriff verweigert und schwerwiegender Authentifizierungsfehler mit GitLab

So konfigurieren Sie PHP-FPM mit NGINX

Installieren Sie WordPress mit Nginx auf Ubuntu 18.04

So richten Sie Nginx mit HTTP/2-Unterstützung unter Ubuntu 18.04 ein