Имеется сервер с работающим nginx, доступ на который осуществляется по webdav. Все было сделано по
'этому мануалу и прекрасно работало, пока не понадобилось сделать доступ для нескольких пользователей со своими логинами и паролями. Самый тривиальный вариант - создать еще один location в со своим auth_basic_user_file. Если следовать примеру по ссылке, то что-то такое:
location ^~ /Family {
...
auth_basic_user_file /usr/local/etc/nginx/secure/family.htpasswd;
...
location ^~ /AnotherFolder {
...
auth_basic_user_file /usr/local/etc/nginx/secure/anotherfolder.htpasswd;
...
}
В браузере такая штуковина работает отлично, т.е. пока находишься в папке /Family, сервер спрашивает логин+пароль из family.htpasswd, а как только заходишь в /AnotherFolder, спрашивает их уже из anotherfolder.htpasswd.
Но DAV-клиент windows (тестировано на 8.1) в данном случае подключает папку /Family как сетевой диск и нормально работает с ней. При попытке подключить еще один диск для /AnotherFolder он уже не спрашивает логин и пароль, а использует старые данные, причем как-то умудряется получать листинги директорий, несмотря на то, что nginx вообще-то должен требовать в них авторизацию по другим учетным данным. В то же время сами файлы на таком сетевом диске не открываются. Если при подключении второго диска специально выбрать "использовать другие учетные данные", то windows выдаст ошибку "указанная сетевая папка подключена с использованием другого имени пользователя и пароля". Я вообще думал что такая ошибка возможна только при работе с сетевыми дисками по SMB, но оказалось, что нет. Еще более непонятно то, почему можно по webdav подключить 2 и более дисков microsoft onedrive, хотя они будут иметь также одинаковое доменное имя вида
https://d.docs.live.net/UNIQUE_FOLDER_NAME/ и различаться только location, как и в моем случае.