锵锵枪 wrote:

Nginx搭建WebDav服务器

注:坑比较多,喜欢折腾的化可以自己玩玩,想要省心还是用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、配置

完整的配置模块如下:

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进行认证

获取密码字符串
[root@localhost ~]# openssl passwd 123456
XEIQ2qamW6lwk

创建用户认证文件
[root@localhost ~]echo "user:XEIQ2qamW6lwk" > passwd

3、坑

弄好后发现windows自带的客户端无法创建、重命名、删除文件夹等操作。对比日志发现操作文件夹的时候,nginx会判断uri,必须用“/”结尾才会成功。

没办法,只能通过if语句强制,添加“/”后正常。
if ($request_method = MKCOL) { rewrite ^(.*[^/])$ $1/ break;}

其余方法类似,可以参考日志进行patch

2020-06-29 16:32:32  0 回复  

====