Nginx gibt einen Internal Server Error 500 nachdem ich Basic Auth konfiguriert habe

8

Ich versuche, Basic Auth auf Nginx zu tun. Ich habe Version 1.9.3 und läuft auf Ubuntu 14.04 und es funktioniert gut mit einer einfachen HTML-Datei.

Hier ist die HTML-Datei:

%Vor%

Und hier ist meine nginx.conf-Datei:

%Vor%

Ich habe htpasswd verwendet, um zwei Benutzer in der Datei "users" unter / etc (Benutzername "calvin" Passwort "Calvin" und Benutzername "Hobbes" Passwort "Hobbes") zu erstellen. Es sieht folgendermaßen aus:

%Vor%

Alle Dateien gehören zu root: root. Die Server-IP-Adresse ist 192.168.1.30 und ich referenziere das direkt in der Conf-Datei.

Alles funktioniert gut, wenn ich die zwei Auth-Zeilen auskommentiere und nginx neu starte, aber wenn ich sie auskommentiere, bekomme ich tatsächlich die Benutzernamen und Passwortaufforderungen, wenn ich versuche, die Seite zu laden, aber sofort danach einen Error 500 Interner Serverfehler, der scheinbar bestehen bleibt und ich muss nginx neu starten.

Jeder kann sehen, was ich hier falsch mache? Ich hatte das gleiche Verhalten auf der Standard Ubuntu 14.04 apt-get-Version von Nginx (1.4.etwas), also glaube ich nicht, dass es die Nginx-Version ist.

    
Thomas Browne 05.08.2015, 13:12
quelle

4 Antworten

17

Nicht wirklich eine Antwort auf Ihre Frage, wie Sie MD5 verwenden. Da dieser Thread bei der Suche nach dem Fehler jedoch auftaucht, füge ich diesen hinzu.

Ähnliche Fehler treten auf, wenn bcrypt verwendet wird, um Passwörter für auth_basic zu generieren:

%Vor%

Da bcrypt in auth_basic ATM nicht unterstützt wird, finden sich mysteriöse 500 Fehler in nginx error.log, (normalerweise gefunden in /var/log/nginx/error.log ), sie sehen ungefähr so ​​aus:

*1 crypt_r() failed (22: Invalid argument), ...

Gegenwärtig besteht die Lösung darin, ein neues Passwort unter Verwendung von md5 zu erzeugen, was ohnehin die Standardeinstellung ist.

Bearbeitet, um Probleme von md5 zu behandeln, wie sie von @EricWolf in den Kommentaren angesprochen wurden:

md5 hat sicher seine Probleme, einige Kontexte können in den folgenden Threads gefunden werden

Von den beiden kann das Geschwindigkeitsproblem abgeschwächt werden, indem man fail2ban verwendet, indem man die fehlgeschlagene Basisauthentifizierung verbietet Sie werden Online-Brute-Forcing unpraktisch machen ( Leitfaden ). Sie können auch lange Passwörter verwenden, um ein bisschen zu versuchen und zu stärken, wie es vorgeschlagen wird. hier .

Abgesehen davon scheint es so gut wie es mit nginx ist ...

    
Drazen Urch 07.03.2016 00:59
quelle
2

Ich hatte beim ersten Erstellen eines Benutzers einen Fehler gemacht. Als Ergebnis sah die Datei htpasswd wie folgt aus:

%Vor%

Nach dem Löschen des leeren Benutzers hat alles funktioniert.

    
Andy Pippin 13.04.2017 23:51
quelle
0

Ich werde einfach die Datei htpassword unter "/ etc / nginx" selbst speichern. Angenommen, es heißt htcontrol , dann ...

sudo htpasswd -c /etc/nginx/htcontrol calvin

Folgen Sie der Eingabeaufforderung für das Passwort und die Datei wird an der richtigen Stelle sein.

%Vor%

oder auth_basic_user_file /etc/nginx/htcontrol; aber die erste Variante funktioniert für mich

    
Dayo 05.08.2015 17:13
quelle
0

Ich hatte gerade das gleiche Problem - nachdem ich das Logbuch überprüft habe, wie von @Drazen Urch vorgeschlagen, habe ich entdeckt, dass die Datei root:root Berechtigungen hatte - nachdem ich zu forge:forge gewechselt habe (ich benutze Forge mit Digital Ocean) Problem ging weg.

    
Sebastian Sulinski 07.07.2017 12:20
quelle

Tags und Links