模块 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 规范只允许在已存在的目录中创建文件。此指令允许创建所有必需的中间目录。

语法 dav_access 用户:权限 ...;
默认值
dav_access user:rw;
上下文 http, server, location

设置新建文件和目录的访问权限,例如:

dav_access user:rw group:rw all:r;

如果指定了任何 groupall 访问权限,则可以省略 user 权限。

dav_access group:rw all:r;

语法 dav_methods off | 方法 ...;
默认值
dav_methods off;
上下文 http, server, location

允许指定的 HTTP 和 WebDAV 方法。参数 off 拒绝该模块处理的所有方法。支持以下方法:PUTDELETEMKCOLCOPYMOVE

使用 PUT 方法上传的文件会先写入临时文件,然后再重命名。从 0.8.9 版本开始,临时文件和持久存储可以放在不同的文件系统上。但是请注意,在这种情况下,文件会在两个文件系统之间复制,而不是进行开销较低的重命名操作。因此建议对于任何给定的 location,保存的文件和由 client_body_temp_path 指令设置的存放临时文件的目录都应放在同一文件系统上。

使用 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