Nginx搭建WebDav服务器
![](https://wx1.sinaimg.cn/large/006q8Q6bly1ffvkj28yc6j30gg09zt95.jpg)
注:坑比较多,喜欢折腾的化可以自己玩玩,想要省心还是用Apache吧。
#### 1、安装
>./configure --with-http\_dav\_module --add-module=/data/nginx-dav-ext-module-master --with-http\_ssl\_module
需要加入如下三个模块:Dav模块用于实现 PUT DELETE MKCOL COPY MOVE这些HTTP方法,但如果只是这样WebDav是完全没办法工作的,还需要dav_ext模块( https://github.com/arut/nginx-dav-ext-module ),提供PROPFIND、 OPTIONS这俩HTTP方法;ssl模块用于提供https支撑。
#### 2、Nginx配置
完整的配置模块如下:
```
location / {
root /data/dav/;
client_body_temp_path /data/client_temp/;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
autoindex on;
create_full_put_path on;
dav_access group:rw all:r;
auth_basic "Authorized Users Only";
auth_basic_user_file /data/passwd;
}
```
##### 通过http basic进行认证
1. 获取密码字符串
>[root@localhost ~]# openssl passwd 123456
>XEIQ2qamW6lwk
2. 创建用户认证文件
>[root@localhost ~]echo "user:XEIQ2qamW6lwk" > passwd
#### 3、坑
弄好后发现windows自带的客户端无法创建、重命名、删除文件夹等操作。对比日志发现操作文件夹的时候,nginx会判断uri,必须用“/”结尾才会成功。
没办法,只能通过if语句强制,添加“/”后正常。
>if ($request_method = MKCOL) { rewrite ^(.*[^/])$ $1/ break;}
其余方法类似,可以参考日志进行patch