Aufgrund der hohen Performance und flexiblen Einsatzmöglichkeiten erfreut sich der nginx-Webserver immer größerer Beliebtheit.
Besonders einem Apache-Umsteiger fällt es vielleicht nicht immer auf Anhieb so leicht, mit den neuen Konfigurationen und Einstellungen zurechtzukommen. Vorallem die simple HTTP-Authentifizierung per .htaccess und .htpasswd funktioniert unter nginx nicht mehr so, wie unter Apache gewohnt.
Unterschiede
Die Einstellungen werden nur noch direkt im Virtualhost getroffen – ohne .htaccess.
Im Grunde funktioniert das genauso wie eine normale .htaccess und .htpasswd-Datei, verbraucht aber weniger Platz und sorgt ggf. für mehr Überblick, da man in der Konfigurationsdatei des Host alle Einstellungen auf einem Blick hat.
Funktionsweise
Für eine User:Passwort-Abfrage (HTTP Auth) benötigen wir im Grunde nur eine Passwortdatei. Diese kann sich irgendwo auf dem System befinden – Hauptsache der Webserver kann diese lesen. Wir können diese auch direkt in den zu schützenden Ordner legen, was eventuell der Übersichtlichkeit ein wenig zu gute kommt.
cd /var/www touch htpasswd nano htpasswd
Auf phpbb.de können wir uns bequem den Inhalt einer solchen Passwortdatei erstellen lassen. Dieser besteht aus dem Usernamen des Logins und dessen Passwort in verschlüsselter Form, getrennt voneinander über einen Doppelpunkt. Nachdem wir unsere .htpasswd mit den nötigen Logins ausgestattet haben, editieren wir unseren Virtualhost.
cd /etc/nginx/sites-enabled nano example.com
Nun werden wir dort einen Eintrag der location-Directive vornehmen.
Sollte ein Request auf diesen Ordner stattfinden, so wird eine HTTP Authentifizierung erfordert. Die Passwortdatei geben wir durch einen absoluten Pfad mit auth_basic_user_file an.
location /admin { auth_basic "Benutzerdefinierter Text"; auth_basic_user_file /var/www/htpasswd; }
Nach einem Neustart von nginx ist unser Ordner „admin“ nun per HTTP-Auth geschützt. Falls es doch nicht so klappt wie es sollte, lohnt sich ein Blick in den Errorlog.
Sollte es Leseprobleme der .htpasswd geben, so erscheint dort ein Hinweis mit dem Errorlevel [crit].
Ansonsten könnten wir noch nach dem Whitelisting-Verfahren eine oder mehrere IPs freigeben, welche direkt Zugriff auf den geschützten Ordner besitzen.
location /admin { #Zugriffsbedingung (IP oder Login korrekt) satisfy any; #Whitelist allow 88.88.88.0/24; #Blacklist deny all; #Name (wird bei der Authentifizierung angezeigt) auth_basic "Benutzerdefinierter Text"; #Pfad zur Passwortdatei auth_basic_user_file /var/www/htpasswd; }
© Yakuza112 Inc.