ngx_http_dav_module
提供WebDAV(Web-based Distributed Authoring and Versioning)功能,允许客户端通过HTTP协议对服务器上的资源进行创建、读取、修改、删除等操作。 WebDAV是一种基于HTTP/1.1
协议的扩展,提供了一组标准的操作方法,使得用户可以通过网络对远程服务器上的文件进行操作,类似于本地文件系统。
提示
--with-http_dav_module
启用模块
提醒
ngx_http_dav_module仅支持WebDAV以下方法,若WebDAV客户端需要额外的其他方法,则当前这个模块不会预期执行:
- MKCOL
- PUT
- DELETE
- COPY
- MOVE
当然,可以结合nginx-dav-ext-module来实现支持更多方法
指令
名称 | 参数类型 | 默认值 | 作用描述 | 上下文 |
---|---|---|---|---|
create_full_put_path | on/off | off | 是否在上传文件时自动创建目录 | http, server, location |
dav_access | users:permissions | user:rw | 设置文件访问权限 | http, server, location |
dav_methods | off/method | off | 设置webDAV支持的方法,PUT/DELETE/MKCOL/COPY/MOVE | http, server, location |
min_delete_depth | number | 0 | 设置删除资源时,路径最小段数,按照/ 分段 | http, server, location |
示例
nginx
server {
listen 8081;
server_name localhost;
location /disk {
# 结合ngx_http_autoindex_module可以查看文件目录
autoindex on;
# 自动创建目录
create_full_put_path on;
# dav支持方法
dav_methods PUT DELETE MKCOL COPY MOVE;
# 文件访问权限
dav_access user:rw group:rw all:rw;
# 不限制上传大小
client_max_body_size 0M;
# 可以结合auth_basic或auth_request实现简单用户认证
#auth_basic "Private Disk";
#auth_basic_user_file auth-user.txt;
# 避免index.html索引
index _;
# 文件存储目录 确保nginx根目录下存在disk目录
alias disk;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
shell
# MKCOL 用于创建目录 每次只能创建单个目录 不会递归创建
# 不以/结尾 409
curl -X MKCOL http://localhost:8081/disk/a
# 若目录已存在 409
curl -X MKCOL http://localhost:8081/disk/a/
# 若父目录不存 409
curl -X MKCOL http://localhost:8081/disk/b/c/d/
curl -X MKCOL http://localhost:8081/disk/a/
curl -X MKCOL http://localhost:8081/disk/a/b/
curl -X MKCOL http://localhost:8081/disk/s/
# create_full_put_path设置为on时会在文件上传时自动创建全目录
# 上传nginx目录下的文件到disk/html目录
curl -X PUT -T conf/auth-user.txt http://localhost:8081/disk/conf/
curl -X PUT -T html/index.html http://localhost:8081/disk/html/
# 获取目录
curl http://localhost:8081/disk/
curl http://localhost:8081/disk/html/
# 获取文件
curl http://localhost:8081/disk/html/index.html
curl http://localhost:8081/disk/conf/auth-user.txt
# 复制通过Destination头指定复制后的名称
# 复制目录 包含目录下的文件 html/ -> new-html/
curl -X COPY -H "Destination:http://localhost:8081/disk/new-html/" http://localhost:8081/disk/html/
# 复制文件 new-html/index.html -> new-html/new-index.html
curl -X COPY -H "Destination:http://localhost:8081/disk/new-html/new-index.html" http://localhost:8081/disk/new-html/index.html
# 移动/重命名通过Destination头指定移动/重命名后的名称
# 移动/重命名目录 new-html/ -> move-html/
curl -X MOVE -H "Destination:http://localhost:8081/disk/move-html/" http://localhost:8081/disk/new-html/
# 移动/重命名文件 move-html/new-index.html -> move-html/move-index.html
curl -X MOVE -H "Destination:http://localhost:8081/disk/move-html/move-index.html" http://localhost:8081/disk/move-html/new-index.html
# 删除目录
curl -X DELETE http://localhost:8081/disk/a/b/
curl -X DELETE http://localhost:8081/disk/a/
curl -X DELETE http://localhost:8081/disk/s/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
效果如下: