Fórum Root.cz
Hlavní témata => Server => Téma založeno: schrapnel 19. 10. 2017, 13:33:57
-
Ahoj,
prepisujem config z apacha pre nginx a dostal som sa do problému s týmto blokom:
<Directory "/var/www/html/d">
AllowOverride All
AuthUserFile /etc/httpd/.htpasswd
AuthType Basic
AuthName "dockdrop"
Require valid-user
#Options None +Indexes
Options All +Indexes
<Files ?*>
Order allow,deny
Allow from all
Satisfy any
</Files>
</Directory>
Systém sa chová tak, že obsluhuje requesty na existujúce súbory, pokus o 'prehliadanie' sa musí najpv authentifikovať.
Čiže
www.example.com/ [AUTH]
www.example.com/file.txt [OK]
www.example.com/obrazky [AUTH]
www.example.com/obrazky/obrazok1.jpg [OK]
www.example.com/obrazky/subfolder [AUTH]
Zatiaľ som sa dopracoval k niečomu takému, ale nefunguje to podľa predstáv...
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
autoindex on;
location ~* /(.+) {
auth_basic off;
}
}
-
zkusil bych (nezkouseno)
try_files $uri $uri/ /auth; (misto 404)
a nasledne udelal internal location:
location /auth {
internal;
autoindex on; (z te hlavni location vyhodit autoindex)
# tvoje dalsi definice
}
Nevyhoda toho bude, ze kdyz se nekdo trefi do existujiciho souboru tak to auth nebude chtit (?to chces?)
Jak jsem psal - nezkousel jsem to, ale internal redirect jsem vyuzival casto na podobne kravinky. Limit je max 10 internich redirectu v ramci jednoho requestu. Treba to nebude nakonec fungovat, ale podival bych se timhle smerem...
-
Áno, ide mi presne o to. Linky priamo na súbory sú obsluhované, akonáhle ale niekde chce prezerať obsah adresára, musí sa autorizovať. Nakoniec som to vyriešil takto:
location / {
try_files $uri @auth;
}
location @auth {
internal;
auth_basic "Administrator Login";
auth_basic_user_file /etc/nginx/.htpasswd;
autoindex on;
}