Die Konfiguration von .htaccess in Nginx bietet einen sicheren Zugriffsschutz auf einem Webserver. Die Konfiguration unterscheidet sich dabei gegenüber der auf Apache.
htpasswd erstellen
Voraussetzung für die Nutzung von .htaccess ist eine htpasswd-Datei. In dieser sind Benutzername und Kennwort gespeichert. Mit den apache2-utils kann eine solche Datei erzeugt werden.
sudo apt-get update sudo apt-get install apache2-utils
Nun steht das Kommando htpasswd bereit und es kann eine versteckte .htpasswd Datei in /etc/nginx erstellt werden (Nginx Konfigurations-Verzeichnis). Sofern die Datei noch nicht besteht, muss -c dem Kommando hinzugefügt werden.
sudo htpasswd -c /etc/nginx/.htpasswd paul
Dabei steht paul für den Benutzernamen. Nach dem Kennwort wird nach Ausführung des Befehls gefragt.
root@pi:~# htpasswd -c /etc/nginx/.htpasswd paul New password: Re-type new password: Adding password for user paul
Neue Benutzer können mit
sudo htpasswd /etc/nginx/.htpasswd neuerbenutzer
hinzugefügt werden. Der Inhalt der erzeugten htpasswd-Datei kann mitcat /etc/nginx/.htpasswd
betrachtet werden.
root@pi:~# cat /etc/nginx/.htpasswd paul:$apr1$EB6mT5VV$DW.DLyQK/zIizfP7n3Lds. neuerbenutzer:$apr1$wwlu7qpV$GOFHSsXtsBTONgoBylKlq1
Konfiguration in Nginx
Die Konfiguration in Nginx selbst wird in der /etc/nginx/sites-available/default Datei gemacht.
nano /etc/nginx/sites-available/default
Hier ein Ausschnitt aus der Konfiguration. Wichtig sind dabei die markierten Zeilen. Zuständig für die .htaccess Funktion ist dabei die auth_basic Anweisung.
server { listen 80; # hört auf Port 80 / HTTP Verkehr root /usr/share/nginx/html; # Web-Stammverzeichnis mit HTML und PHP-Dateien index index.html index.htm index.php; server_name domain.de; # Domain für diese Server-Anweisung location / { try_files $uri $uri/ =404; auth_basic "Restricted"; # Ausgabe-Meldung bei Zugriff auth_basic_user_file /etc/nginx/.htpasswd; # Pfad zur .htpasswd-Datei } location ~ /\.ht { deny all; # Verweigert Zugriff auf die .ht-Dateien } }
Abschließend muss die Konfiguration von Nginx neu geladen werden. Erst dann werden die Änderungen wirksam.
/etc/init.d/nginx reload
.htaccess Ergebnis
Wird nun versucht auf das Webverzeichnis zuzugreifen, kommt die Authentifzierung über .htaccess in Nginx.
Schlägt die Authentifizierung fehl, wird der Zugriff verweigert. Ist die Anmeldung erfolgreich, wird der Zugriff auf die Seite gewährt.
Der Beitrag .htaccess in Nginx einrichten erschien auf Willy's Technik-Blog.