Как настроить WebDAV на Nginx и что проверить перед подключением Windows

21 июня 2026 года разбираю доступ к файлам через WebDAV на Nginx и подключение такой папки в Windows. Документация Nginx сразу задаёт важную границу: встроенный DAV-модуль поддерживает только часть нужных методов. Для клиента, которому требуются дополнительные операции, одного этого модуля недостаточно.

Буква сетевого диска не делает WebDAV обычной SMB-папкой

WebDAV использует HTTP или HTTPS для работы с удалёнными файлами. SMB является другим протоколом. В Проводнике оба подключения могут выглядеть как диск Z:, но это не делает их одинаковыми по блокировкам, ограничениям и совместимости с программами. Открывать SMB напрямую в интернет вместо защищённого подключения я бы не стал.

На стороне Nginx базовый модуль умеет PUT, DELETE, MKCOL, COPY и MOVE. Расширение nginx-dav-ext-module добавляет PROPFIND, OPTIONS, LOCK и UNLOCK. При этом доступность конкретных директив зависит от установленной сборки и версии модуля. Пакет из репозитория нужно проверять, а не считать автоматически равным последнему README.

Для файлов нужен отдельный каталог вне WordPress

Лучше выделить отдельный HTTPS-хост и отдельное хранилище, к которому имеет доступ только нужный пользователь веб-сервера. Не давайте запись в каталог темы, плагинов или всего WordPress. Файл паролей Basic Auth также должен лежать вне доступного по HTTP дерева. Сам Basic Auth используйте только поверх HTTPS.

Пример ниже является частью уже настроенного HTTPS-сервера, а не полным конфигом. При root /srv/webdav адрес /files/ соответствует каталогу /srv/webdav/files/. Каталог и файл паролей нужно подготовить заранее с правами для реального пользователя вашего Nginx.

Если расширенный модуль поддерживает блокировки, в контексте http сначала объявляют общую зону:

dav_ext_lock_zone zone=dav_locks:10m timeout=5m;

А в server можно добавить отдельный обработчик. Здесь PHP не выполняется, листинг через autoindex выключен, а создание файлов не выдаёт права чтения всем локальным пользователям.

location ^~ /files/ {
    root /srv/webdav;
    auth_basic "WebDAV";
    auth_basic_user_file /etc/nginx/webdav.users;

    dav_methods PUT DELETE MKCOL COPY MOVE;
    dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
    dav_ext_lock zone=dav_locks;
    dav_access user:rw group:rw;
    create_full_put_path on;
    client_max_body_size 100m;
    autoindex off;

    types { }
    default_type application/octet-stream;
    add_header X-Content-Type-Options nosniff always;
}

Одна строка DAV: 1,2 не добавляет серверу отсутствующие операции. Для блокировок нужны и методы LOCK/UNLOCK, и зона, и её подключение. Перед применением конфигурации сохраните рабочий вариант и выполните nginx -t. Если тест сообщает об ошибке, reload делать не нужно.

Сначала проверяем сервер, потом подключаем Windows

Для чтения списка ресурсов можно отправить PROPFIND. curl запросит пароль отдельно, он не попадёт в строку команды. Ответ 207 со списком является проверкой этой операции, но ещё не доказывает корректную запись и блокировку файла.

curl --user davuser -X PROPFIND -H 'Depth: 1' https://example.com/files/

Запись, чтение после изменения, перемещение и LOCK/UNLOCK проверяйте на отдельном тестовом файле. Успешная загрузка одного файла не означает, что любые офисные программы будут работать с этим ресурсом как с локальным диском.

В Windows важны WebClient, сертификат и сеанс пользователя

Доступность встроенного клиента зависит от версии Windows и её компонентов. В системе с WebClient сначала можно проверить состояние службы командой sc query WebClient. Если её запуск разрешён политиками, необходимые действия выполняют с правами администратора.

Сам диск удобнее подключать из обычного сеанса пользователя, чтобы он был виден в его Проводнике. В примере используется свободная буква Z:, HTTPS и отдельный запрос пароля:

net use Z: "https://example.com/files/" /user:davuser * /persistent:no

Не исправляйте ошибки авторизации бездумным включением BasicAuthLevel=2. В описании Microsoft значение 1 разрешает Basic Auth только через SSL, а 2 разрешает его и без SSL. Сначала проверьте имя и доверие сертификата, адрес, службу и серверные права. Предупреждение TLS нельзя обходить ради подключения.

Access через WebDAV не становится серверной базой

Файл .accdb остаётся файловой базой. Наличие сетевого диска и даже WebDAV-блокировки не гарантирует нужную Access согласованность записи. Для рабочей удалённой системы нужен поддерживаемый вариант развёртывания, а не эксперимент с ценными данными. Обычное копирование открытого файла тоже не гарантирует согласованный бэкап.

WebDAV полезен как ограниченный HTTPS-доступ к отдельным файлам. Я бы начинал с тестового каталога, проверял конкретный клиент и не расширял права ради исчезновения ошибки. А контроль сертификата и продления вынесен в отдельную заметку о Let’s Encrypt.

Источники и ссылки


Комментарии загружаются…