HTTP Basic Auth in Nginx
Eine Anleitung, wie Sie HTTP Basic Auth für den Webserver Nginx einfach einrichten.
Wenn Sie eine Website hinter einem einfachen Login verbergen müssen und den Webserver Nginx verwenden, können Sie sehr einfach den Mechanismus HTTP Basic Auth nutzen. Wenn Sie den Webserver Apache verwenden, lesen Sie den Artikel HTTP Basic Auth mit Apache und .htaccess
Die Einrichtung der HTTP Basic Authentication ist sehr einfach und schnell. Im Grunde genügt es, eine Datei mit den Zugangsdaten zu generieren und zwei Zeilen in die Domain-Konfiguration von nginx einzufügen.
Die Datei mit den Zugangsdaten ist leicht erstellt. Dafür können Sie entweder einen Online-Dienst nutzen, z. B. https://hostingcanada.org/htpasswd-generator/, oder den Befehl htpasswd:
$ htpasswd -bcB .htpasswd username password
Damit wird die Datei .htpasswd direkt im aktuellen Verzeichnis erzeugt, und die verwendeten Parameter -bcB bedeuten:
- b – Das Passwort wird direkt im Befehl angegeben.
- c – Die Datei soll neu erstellt werden. Existiert sie bereits, wird sie überschrieben!
- B – Für die Verschlüsselung des Passworts wird bcrypt verwendet
Wenn Ihnen der Befehl htpasswd nicht zur Verfügung steht, können Sie ihn ganz einfach aus dem Paket apache2-utils installieren (bzw. httpd-tools in der Red-Hat-Welt). Unter Debian/Ubuntu geht die Installation ganz einfach mit:
# Unter Debian als root
apt install apache2-utils
# Unter Ubuntu mit sudo
sudo apt install apache2-utils
Den Login können wir anschließend entweder nur für einen bestimmten Teil der Website mit der location-Direktive einrichten:
location /api {
auth_basic "Login required";
auth_basic_user_file /path/to/.htpasswd;
}
Oder ebenso einfach für die gesamte Website, indem wir ihn direkt in die server-Definition einfügen:
server {
...
auth_basic "Login required";
auth_basic_user_file /path/to/.htpasswd;
Die Unterstützung für Basic Auth ist in Nginx nur rudimentär, daher lässt sich – anders als etwa beim Apache-Server – nicht festlegen, welcher Benutzer sich konkret anmelden darf. Anmelden können sich alle Benutzer, die in der Auth-Datei definiert sind.
Für alle Konfigurationsmöglichkeiten empfehle ich die offizielle Dokumentation HTTP Basic Auth in Nginx.