nginx: auth_basic und php
ich schützen möchte einen Ordner von meiner website mit ein Passwort mit auth_basic. Dieser Ordner enthält php-Skripte, die ausgeführt werden soll, wenn Sie angefordert werden.
Ich habe versucht, die folgenden:
location /admin {
auth_basic "Admin-Section";
auth_basic_user_file /myfolder/.htpasswd;
}
location ~ ^/admin/.*\.php$ {
auth_basic "Admin-Section";
auth_basic_user_file /myfolder/.htpasswd;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Werde ich aufgefordert, Benutzername/Kennwort, die beim anfordern des php-scripts als admin-Ordner, aber die php-Scripte werden immer heruntergeladen anstatt ausgeführt über fastcgi.
Was mache ich falsch?
EDIT: Auf meinem lokalen Rechner funktioniert alles einwandfrei mit dieser Konfiguration. o0
EDIT: BTW, php ist arbeiten außerhalb der admin-Ordner mit dem gleichen fastcgi-Optionen.
EDIT: OMG!!! Die Website config wurde gespeichert unter /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/enthalten ist ein symlink auf die mysite-Datei. Seit einiger Zeit verändern die mysite-Datei keine Wirkung hatte. E. g. ändern alle Standorte "deny all" hatte keinen Effekt. Die Dateien gesendet wurden, ohne ein problem.
So entfernte ich den symlink neu gestartet und die server. Dann habe ich den symlink wieder neu gestartet, der server und alles funktioniert wie erwartet. Kann jemand erklären, die seltsam Verhalten?
Gest Grüße,
Biggie
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit dieser Konfiguration, nginx passt nur eine der beiden Blöcke - der mit dem höchsten Vorrang.
Die Lösung besteht in der Kombination der PHP-block in den AUTH-block. Dieser Ansatz wird empfohlen, die von der nginx-Autor Igor Sysoev.
Dies ist eine alte Frage, aber ich hatte gerade das gleiche problem, also hier ist die Erklärung.
Nginx verwendet die beschriebenen Regeln in den docs entsprechend der Lage der Blöcke. Für herkömmliche Blöcke, die längste übereinstimmung wird die eine, die angewandt werden, aber für reguläre Ausdrücke ist es immer die erste passende block angewendet werden.
In Ihre Produktions-server, werden Sie wahrscheinlich hatte einen
location ~ \.php$
block über den admin-block, also die listen-block, den Sie gebucht wurde nie angewendet.Lange kurze Geschichte: wenn der Umgang mit regulären Ausdrücken hören-Blöcke in nginx, Reihenfolge ist wichtig. Legen Sie die spezifische Spiele vor, die Allgemeinen lieben.
Müssen Sie entfernen Sie die folgende Zeile:
Vielleicht haben Sie vergessen hinzuzufügen root: