dav-ext

Adds the missing WebDAV methods to nginx

dynamic moduleBSD-2-Clausesource

Overview

nginx-dav-ext-module adds the WebDAV methods PROPFIND, OPTIONS, LOCK, and UNLOCK to nginx. The stock ngx_http_dav_module only implements PUT, DELETE, MKCOL, COPY, and MOVE, which is not enough for most WebDAV clients.

With both modules enabled, nginx can serve a full WebDAV share that works with clients such as macOS Finder, Windows Explorer, and cadaver. Locking state is kept in a shared memory zone, so it works across worker processes.

The module is written by Roman Arutyunyan, an nginx core developer. It requires libxml2 for parsing PROPFIND request bodies.

Key directives

dav_ext_methodsEnables PROPFIND, OPTIONS, LOCK, and UNLOCK for a location, complementing the dav_methods directive of the stock DAV module.
dav_ext_lock_zoneDeclares a shared memory zone that stores WebDAV locks, with a configurable size and lock timeout.
dav_ext_lockActivates locking in a location by pointing it at a named lock zone.
PROPFIND supportAnswers property queries about files and collections, which is the request most WebDAV clients send first.

Example

nginx.conf
load_module modules/ngx_http_dav_ext_module.so; http { dav_ext_lock_zone zone=davlock:10m; server { location /webdav/ { root /srv/dav; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; dav_ext_lock zone=davlock; } } }

Availability

Ships as a dynamic module in libnginx-mod-http-dav-ext, installed automatically with nginx-extras. The package drops a load_module config into /etc/nginx/modules-enabled/, so it loads on start.