WebDAV
WebDAV
WebDAV 扩展自 HTTP 协议,可以在远程 web 服务器上管理文件
作为一种标准的协议,许多 App 支持通过 WebDAV 备份或管理数据
也正由于这是一种标准的协议,使用网盘无需通过对应的客户端,国内许多主要的网盘都不提供 WebDAV,如百度网盘;有提供 WebDAV 的如坚果云
而无论如何,数据最终还是存储在对应的服务商手里,因此我今天在自己的服务器上搭建 WebDAV 服务,用于一些重要数据的存储
安装
安装 Nginx
如果还没有安装 Nginx,使用以下命令进行安装:
sudo apt update sudo apt install nginx
安装
nginx-dav-ext-module
Nginx 的标准安装不包含 WebDAV 模块,因此需要安装
nginx-dav-ext-module
:sudo apt install libnginx-mod-http-dav-ext
配置 WebDAV
创建一个新的配置文件:
sudo nano /etc/nginx/sites-available/<webdav.domain.com>
添加以下配置:
server { 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 文件存放目录并设置权限:
sudo 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
工具:然后创建一个用户和密码文件:sudo apt install apache2-utils
根据提示输入密码sudo htpasswd -c /etc/nginx/.htpasswd <username>
启用站点配置
将新配置文件链接到
sites-enabled
目录:sudo ln -s /etc/nginx/sites-available/<webdav.domain.com> /etc/nginx/sites-enabled/
测试 Nginx 配置
在重新加载 Nginx 之前,先测试配置文件是否正确:
sudo nginx -t
重启 Nginx
如果配置测试没有错误,可以重启 Nginx 以应用更改:
现在,可以通过 `http://<webdav.domain.comsudo systemctl restart nginx
/webdav/` 访问 WebDAV 中的文件
在连接时会要求输入用户名和密码
(可选,建议)启用 HTTPS
使用 Let’s Encrypt 为站点获取 SSL 证书
安装 Certbot
sudo apt install certbot python3-certbot-nginx
获取 SSL 证书
使用以下命令来获取证书:
sudo certbot --nginx -d <webdav.domain.com>
按照提示完成 SSL 证书的获取
配置 WebDAV
编辑或创建 WebDAV 的 Nginx 配置文件
/etc/nginx/sites-available/<webdav.domain.com>
sudo nano /etc/nginx/sites-available/<webdav.domain.com>
正常情况下,配置文件将会调整为以下内容:
server { 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 信息即可