Kontakt aufnehmen
Server 2 Min. Lesezeit · 07/2021

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:

bash
$ 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:

bash
# 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:

nginx
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:

nginx
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.

Teilen
LinkedIn Facebook

Brauchen Sie mehr als einen Artikel?

Melden Sie sich unverbindlich – ein paar Sätze dazu, worum es geht, genügen.

Weiterlesen

Ähnliche Artikel

Weitere Notizen aus Betrieb und Entwicklung.

Gesamter Ratgeber