WebDAV
WebDAV 扩展自 HTTP 协议,可以在远程 web 服务器上管理文件
作为一种标准的协议,许多 App 支持通过 WebDAV 备份或管理数据
也正由于这是一种标准的协议,使用网盘无需通过对应的客户端,国内许多主要的网盘都不提供 WebDAV,如百度网盘;有提供 WebDAV 的如坚果云
而无论如何,数据最终还是存储在对应的服务商手里,因此我今天在自己的服务器上搭建 WebDAV 服务,用于一些重要数据的存储
安装
安装 Nginx
如果还没有安装 Nginx,使用以下命令进行安装:
1
2sudo apt update
sudo apt install nginx安装
nginx-dav-ext-module
Nginx 的标准安装不包含 WebDAV 模块,因此需要安装
nginx-dav-ext-module
:1
sudo apt install libnginx-mod-http-dav-ext
配置 WebDAV
创建一个新的配置文件:
1
sudo nano /etc/nginx/sites-available/<webdav.domain.com>
添加以下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
listen 80;
server_name <webdav.domain.com>;
location /webdav/ {
root /var/www/webdav; # WebDAV 文件存放目录
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods OPTIONS PROPFIND;
create_full_put_path on;
dav_access user:rw group:rw all:r;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd; # 基本认证文件
client_max_body_size 100M; # 单个文件大小限制,根据需求调整
autoindex on;
}
}创建 WebDAV 文件目录
创建 WebDAV 文件存放目录并设置权限:
1
2
3sudo mkdir -p /var/www/webdav
sudo chown -R www-data:www-data /var/www/webdav
sudo chmod -R 755 /var/www/webdav设置基本认证
为了保护 WebDAV,建议使用基本认证
首先安装
apache2-utils
,以便使用htpasswd
工具:1
sudo apt install apache2-utils
然后创建一个用户和密码文件:
1
sudo htpasswd -c /etc/nginx/.htpasswd <username>
根据提示输入密码
启用站点配置
将新配置文件链接到
sites-enabled
目录:1
sudo ln -s /etc/nginx/sites-available/<webdav.domain.com> /etc/nginx/sites-enabled/
测试 Nginx 配置
在重新加载 Nginx 之前,先测试配置文件是否正确:
1
sudo nginx -t
重启 Nginx
如果配置测试没有错误,可以重启 Nginx 以应用更改:
1
sudo systemctl restart nginx
现在,可以通过
http://<webdav.domain.com>/webdav/
访问 WebDAV 中的文件在连接时会要求输入用户名和密码
(可选,建议)启用 HTTPS
使用 Let’s Encrypt 为站点获取 SSL 证书
安装 Certbot
1
sudo apt install certbot python3-certbot-nginx
获取 SSL 证书
使用以下命令来获取证书:
1
sudo certbot --nginx -d <webdav.domain.com>
按照提示完成 SSL 证书的获取
配置 WebDAV
编辑或创建 WebDAV 的 Nginx 配置文件
/etc/nginx/sites-available/<webdav.domain.com>
1
sudo nano /etc/nginx/sites-available/<webdav.domain.com>
正常情况下,配置文件将会调整为以下内容:
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
27server {
listen 80;
server_name <webdav.domain.com>;
# 强制将 HTTP 请求重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <webdav.domain.com>;
ssl_certificate /etc/letsencrypt/live/<webdav.domain.com>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<webdav.domain.com>/privkey.pem;
location /webdav/ {
root /var/www/webdav; # WebDAV 文件存放目录
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods OPTIONS PROPFIND;
create_full_put_path on;
dav_access user:rw group:rw all:r;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd; # 基本认证文件
client_max_body_size 100M; # 单个文件大小限制,根据需求调整
autoindex on;
}
}⚠️ 注意
如果 WebDAV 目录是空的,也有可能返回
403 Forbidden
确保在 WebDAV 目录中有一些可访问的文件或子目录
应用 WebDAV
在支持 WebDAV 的 App 里,如 Zotero,填入 WebDAV 信息即可
About this Post
This post is written by OwlllOvO, licensed under CC BY-NC 4.0.