Nginx Auth · 3 min read · Jan 23, 2026

Grundlegende 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 Dokumentenstamm /var/www/www.example.com/web/ und der Nginx vhost-Konfigurationsdatei /etc/nginx/sites-enabled/www.example.com.vhost. Das Verzeichnis, das ich passwortgeschützt haben möchte, ist /var/www/www.example.com/web/test/.

2 Erstellen der Passwortdatei

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

2.1 Verwendung 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
root@server1:~# which htpasswd  
/usr/bin/htpasswd  
root@server1:~#

Wenn Sie eine Ausgabe wie die obige erhalten, ist alles in Ordnung - htpasswd ist bereits installiert. Wenn der Befehl ohne Ausgabe zurückgegeben wird, existiert htpasswd nicht auf Ihrem System, und Sie müssen es installieren. Auf 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 den Benutzer falko darin speichern (Sie können der Passwortdatei jeden beliebigen Namen geben - es ist nicht notwendig, sie .htpasswd zu nennen; ich habe sie nur .htpasswd genannt, weil das die Art ist, wie Passwortdateien unter Apache benannt werden):

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 bewirkt, dass die Datei von Grund auf neu erstellt wird; wenn sie vorher nicht existierte, wird sie erstellt; wenn sie vorher existierte, wird sie mit einer neuen überschrieben, und alle Benutzer aus der alten Datei gehen verloren! Daher, wenn Sie einen weiteren Benutzer hinzufügen möchten, ohne alle vorhandenen Benutzer zu löschen, verwenden Sie den htpasswd-Befehl ohne den Schalter -c:

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

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

2.2 Verwendung des htpasswd.py Python-Skripts

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 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 den Benutzer falko darin speichern (Sie können der Passwortdatei jeden beliebigen Namen geben - es ist nicht notwendig, sie .htpasswd zu nennen; ich habe sie nur .htpasswd genannt, weil das die Art ist, wie Passwortdateien unter Apache benannt werden):

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

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

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

Der letzte Befehl fügt den Benutzer till zur /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 haben, müssen wir sie nur noch zu unserer Nginx vhost-Konfiguration in /etc/nginx/sites-enabled/www.example.com.vhost innerhalb des server {} Containers hinzufügen.

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

Da ich das Testverzeichnis im Dokumentenstamm passwortgeschützt haben möchte, verwende ich hier location /test {} (um die gesamte Website passwortgeschützt zu machen, 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 "Eingeschränkt";
                auth_basic_user_file /var/www/www.example.com/.htpasswd;
       }
[...] 
}

Starten Sie Nginx danach neu:

service nginx reload

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

Nginx-Basisauthentifizierung (.htpasswd) Eingabeaufforderung.

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

Login ok.

Andernfalls sehen Sie eine 401 Authorization Required-Fehlermeldung:

Nginx Autorisierung erforderlich.

4 Links

Über den Autor

Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles Nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.