Модуль ngx_http_dav_module

Пример конфигурации
Директивы
     create_full_put_path
     dav_access
     dav_methods
     min_delete_depth

Модуль ngx_http_dav_module предназначен для автоматизации задач управления файлами на сервере по протоколу WebDAV. Модуль обрабатывает HTTP- и WebDAV-методы PUT, DELETE, MKCOL, COPY и MOVE.

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра --with-http_dav_module.

WebDAV-клиенты, которые требуют для работы дополнительных WebDAV-методов, не будут работать с этим модулем.

Пример конфигурации

location / {
    root                  /data/www;

    client_body_temp_path /data/client_temp;

    dav_methods PUT DELETE MKCOL COPY MOVE;

    create_full_put_path  on;
    dav_access            group:rw  all:r;

    limit_except GET {
        allow 192.168.1.0/32;
        deny  all;
    }
}

Директивы

Синтаксис: create_full_put_path on | off;
Умолчание:
create_full_put_path off;
Контекст: http, server, location

По спецификации WebDAV-метод PUT может создавать файл только в уже существующем каталоге. Данная директива разрешает создавать все необходимые промежуточные каталоги.

Синтаксис: dav_access пользователи:права ...;
Умолчание:
dav_access user:rw;
Контекст: http, server, location

Задаёт права доступа для создаваемых файлов и каталогов, например,

dav_access user:rw group:rw all:r;

Если заданы какие-либо права для group или all, то права для user указывать необязательно:

dav_access group:rw all:r;

Синтаксис: dav_methods off | метод ...;
Умолчание:
dav_methods off;
Контекст: http, server, location

Разрешает указанные HTTP- и WebDAV-методы. Параметр off запрещает все методы, обрабатываемые данным модулем. Поддерживаются следующие методы: PUT, DELETE, MKCOL, COPY и MOVE.

Файл, загружаемый методом PUT, записывается во временный файл, а потом этот файл переименовывается. Начиная с версии 0.8.9 временный файл и его постоянное место хранения могут располагаться на разных файловых системах. Однако нужно учитывать, что в этом случае вместо дешёвой операции переименовывания в пределах одной файловой системы файл копируется с одной файловой системы на другую. Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой системе, что и каталог с временными файлами, задаваемый директивой client_body_temp_path для данного location.

При создании файла с помощью метода PUT можно задать дату модификации, передав её в поле заголовка “Date”.

Синтаксис: min_delete_depth число;
Умолчание:
min_delete_depth 0;
Контекст: http, server, location

Разрешает методу DELETE удалять файлы при условии, что число элементов в пути запроса не меньше заданного. Например, директива

min_delete_depth 4;

разрешает удалять файлы по запросам

/users/00/00/name
/users/00/00/name/pic.jpg
/users/00/00/page.html

и запрещает удаление

/users/00/00