В предыдущей статье, посвященной данной теме, было описано, как завести у себя небольшой WebDAV сервер на Apache. Набирающий популярность веб-сервер nginx также также подходит для этих задач. Его модуль ngx_http_dav_module поддерживает основные WebDAV-методы PUT, DELETE, MKCOL, COPY и MOVE, а с помощью дополнения nginx-dav-ext-module можно включить поддержку остальных (PROPFIND и OPTIONS).
- Для начала необходимо скачать исходные пакеты nginx с официального сайта. Если требуется дополнительный функционал, стягиваем репозиторий
- Во время сборки nginx указываем путь до дополнительного модуля с помощью опции
--add-module=/путь/до/папки
, а также включаем в параметры опцию--with-http_dav_module
- После успешной установки веб-сервера переходим к настройке. Выбираем директорию, которую хотим выделить под управление по сети. Проверяем доступность для пользователя, под которым работает nginx (см. его настройки)
- Создаем пару логин+пароль для авторизации на нашем сервере. Авторизация по протоколу HTTP Basic Authentication в nginx предоставляется с помощью модуля ngx_http_auth_basic_module, который включен по умолчанию. Генерируем хэш пароля с помощью утилиты из набора apache-utils htpasswd или любым онлайн генератором файлов .htpasswd.
- В файле конфигураций nginx создаем location, в котором будет содержаться описание работы с этой директорией. О доступных в рамках этого модуля директивах можно найти информацию в официальной документации. Пример настройки:
location / { #указываем нужные методы dav_methods PUT DELETE MKCOL COPY MOVE; #работает,только если включали дополнительный модуль dav_ext_methods PROPFIND OPTIONS; #создавать промежуточные каталоги в методе PUT create_full_put_path on; #права доступа для создаваемых объектов dav_access group:rw all:r; #добавляем авторизацию auth_basic "Please login for access"; #путь до файла с хэшем пароля auth_basic_user_file /mnt/disk/.passwd.dav; #разрешаем просмотр директории autoindex on; #отключаем ограничение по размеру на загрузку файлов client_max_body_size 0; #путь до корня выделенной под WebDAV директории root /mnt/disk; }
- Перезапустив nginx проверяем доступность каталога по сети с помощью браузера или любого удобного WebDAV-клиента
Note: Есть 2 версии nginx-dav-ext-module. При работе с модулем из первого репозитория была выявлена проблема: Nautilus некорректно отображает кириллические имена файлов (преобразует их в urlencode, в результате чего вместо «Фильмы» папка называется «%d0%a4%d0%b8%d0%bb%d1%8c%d0%bc%d1%8b»). Позже был найден форк репозитория с фиксом этой проблемы. В статье указан последний репозиторий.