Nginx 实现类似坚果云的 WebDAV 服务
安装步骤
1. 安装 Nginx 和必要的模块
sudo apt update
sudo apt install nginx-extras注意:必须安装 nginx-extras 而不是普通的 nginx,因为完整的 WebDAV 支持(包括 PROPFIND、PROPPATCH、MKCOL 等方法)只在 extras 版本中提供。
2. 创建 WebDAV 目录
sudo mkdir -p /var/www/webdav
sudo chown www-data:www-data /var/www/webdav
sudo chmod 755 /var/www/webdav3. 创建认证文件
# 安装 htpasswd 工具
sudo apt install apache2-utils
# 创建用户(假设用户名是 username)
sudo htpasswd -c /etc/nginx/.htpasswd username输入密码后会创建认证文件。
4. 配置 Nginx
创建 WebDAV 站点配置:
sudo vim /etc/nginx/sites-available/webdav写入以下配置:
server {
listen 80;
server_name your_domain.com;
access_log /var/log/nginx/webdav_access.log;
error_log /var/log/nginx/webdav_error.log;
location /webdav {
alias /var/www/webdav;
# 启用基础 WebDAV 方法
dav_methods PUT DELETE MKCOL COPY MOVE;
# 扩展方法只支持 PROPFIND 和 OPTIONS
dav_ext_methods PROPFIND OPTIONS;
# 创建目录权限
dav_access user:rw group:r all:r;
# 自动创建目录
create_full_put_path on;
# 客户端请求体大小限制
client_max_body_size 10G;
client_body_temp_path /tmp;
# 启用认证
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
# 禁用自动索引
autoindex off;
}
}5. 启用站点并重启 Nginx
# 创建软链接启用站点
sudo ln -s /etc/nginx/sites-available/webdav /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx测试连接
Linux/macOS 测试:
# 测试连接
curl -u username:password http://your_domain.com/webdav/
# 上传文件
curl -u username:password -T test.txt http://your_domain.com/webdav/test.txtWindows 测试:
- 打开"此电脑"
- 点击"映射网络驱动器"
- 输入地址:
http://your_domain.com/webdav - 输入用户名和密码
HTTPS 配置(强烈推荐)
使用 Let's Encrypt 免费证书:
# 安装 certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书并自动配置
sudo certbot --nginx -d your_domain.com然后更新 Nginx 配置,使用 HTTPS。
常见问题处理
1. Windows 客户端无法连接
Windows 默认只支持 HTTPS 的 WebDAV。解决方法:
- 启用 HTTPS(推荐)
- 或修改注册表允许 HTTP(不推荐)
2. 上传大文件失败
调整 client_max_body_size 参数。
3. 权限问题
确保 www-data 用户有读写权限:
sudo chown -R www-data:www-data /var/www/webdav