01 什么是webdav?

WebDAV是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。

通俗一点儿来说,WebDAV 就是一种互联网方法,应用此方法可以在服务器上划出一块存储空间,可以使用用户名和密码来控制访问,让用户可以直接存储、下载、编辑文件。比方说,为了能够自由的同步 Zotero 中的论文,我们可以通过 WebDAV 來同步电脑中的论文到云端上。

  • 有哪些支持webdav的网盘?
    国外网盘:Box、Dropbox、teracloud、yandex、TransIP
    国内网盘:坚果云、城通网盘
    私有云:OwnCloud、Seafile 、群晖

    目前国内最好用的支持webdav:坚果云

当然,我们也可以通过nginx自建webdav服务。

02 Nginx + WebDAV

2.1 安装nginx-full

  1. 安装nginx-full
1
apt install nginx-full

2.2 创建文件夹

1
2
3
mkdir /home/webdav
mkdir /home/webdav/data
mkdir /home/webdav/tmp

后续发现webdav不可用,则需要修改权限(777):

1
2
3
chmod -R 777 /home/webdav
chmod /home/webdav/data
chmod /home/webdav/tmp

或者可以将文件夹所有者改为www-data

1
2
chown -R www-data:www-data webdav
#权限设定707

2.3 配置webdav的证书

2.3.1 webdav 配置文档

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
server {

server_name webdav.mydomain.com;

root /path/of/webdav/data;

# dav allowed method
dav_methods PUT DELETE MKCOL COPY MOVE;
# Allow current scope perform specified DAV method
dav_ext_methods PROPFIND OPTIONS;

# In this folder, newly created folder or file is to have specified permission. If n>
dav_access all:rw;

# Temporary folder
client_body_temp_path /path/of/webdav/data;

# MAX size of uploaded file, 0 mean unlimited
client_max_body_size 0;

# Allow autocreate folder here if necessary
create_full_put_path on;

# Autoindex
autoindex on;

listen [::]:80;
listen 80;
}

2.3.2 重启nginx

确认配置正确,并重启nginx

1
2
3
4
ln -s /etc/nginx/sites-available/webdav.mydomain.com.conf /etc/nginx/sites-enabled/

nginx -t
systemctl restart nginx

2.3.3 配置证书

1
2
certbot --nginx
# 注意:执行之后有没有对其他nginx文档进行更改

2.3.4 修改端口

根据自己的需要修改自己的端口。

2.4 设定 Nginx Authentication

2.4.1 注册用户并设置密码

安装生成密钥的工具

1
apt install apache2-utils

注册用户,并设置密码:

1
2
htpasswd -c /etc/nginx/.webdav_htpasswd <Username>
# 然后输入密码,完成设置

然后在nginx配置文档中加上:

1
2
auth_basic "Authorized Users Only";
auth_basic_user_file /path/of/.htpasswd;

重启 nginx:

1
nginx -s reload

访问并测试。至此,个人的webdav服务就完成啦。

03 参考文档