Nginx · 3 min read · Jan 24, 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.
Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!
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 mit einem Passwort schützen 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 htpasswdroot@server1:~# which htpasswd
/usr/bin/htpasswd
root@server1:~#Wenn Sie eine Ausgabe wie die obenstehende 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 install apache2-utilsIch 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 falkoSie 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 tillDer 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/10791/trunk/contrib/htpasswd.py
chmod 755 /usr/local/bin/htpasswd.pyIch 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 falkossecretBitte 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 tillssecretDer 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 Nginx konfigurieren
Jetzt, wo 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.
vi /etc/nginx/sites-enabled/www.example.com.vhostDa 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 "Eingeschränkt"; auth_basic_user_file /var/www/www.example.com/.htpasswd; } [...] } |
Laden Sie Nginx danach neu:
/etc/init.d/nginx reloadDas 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:

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

Andernfalls sehen Sie eine 401 Authorization Required-Fehlermeldung:

4 Links
- 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 Inhaber 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.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.