webdav服务
✅ **Arch Linux 搭建 WebDAV 服务器完整教程**#
本教程基于 Arch Linux,使用 Nginx + dav_ext 模块 搭建功能完整的 WebDAV 服务,支持:
- Windows / macOS / Linux
- Android(MT 管理器、MX 文件管理器)
- Alist 挂载 WebDAV
- 官方标准 WebDAV 操作:PROPFIND、PUT、DELETE、MKCOL、COPY、MOVE、LOCK、UNLOCK
测试平台:Arch Linux (Desktop) + Nginx
📌 1. 安装必要的软件#
Arch 默认 Nginx 不支持 WebDAV 扩展,所以需要安装 AUR 模块:
yay -S nginx-mod-dav-ext查看模块安装位置:
pacman -Ql nginx-mod-dav-ext输出中可以看到:
/usr/lib/nginx/modules/ngx_http_dav_ext_module.so📌 2. 加载 WebDAV 扩展模块#
编辑 /etc/nginx/nginx.conf 最顶部加入:
load_module /usr/lib/nginx/modules/ngx_http_dav_ext_module.so;测试 Nginx 配置:
sudo nginx -t如果提示 syntax OK,则继续。
📌 3. 创建 WebDAV 根目录与权限#
sudo mkdir -p /srv/webdav
sudo chown -R http:http /srv/webdav
sudo chmod -R 755 /srv/webdav注意:Nginx 默认运行用户为
http,WebDAV 目录必须属于此用户才能写入文件。
📌 4. 创建 WebDAV 账户密码#
sudo mkdir -p /etc/nginx
sudo htpasswd -c /etc/nginx/.webdav_passwd youruser输入密码即可。
📌 5. 添加 WebDAV 的 Nginx 配置#
创建 /etc/nginx/conf.d/webdav.conf:
server {
listen 8008;
server_name _;
root /srv/webdav;
# 基本认证
auth_basic "WebDAV";
auth_basic_user_file /etc/nginx/.webdav_passwd;
location / {
autoindex on;
# 标准 WebDAV 方法
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
dav_access user:rw group:rw all:r;
create_full_put_path on;
client_max_body_size 0;
# 避免 405 错误(非常重要)
error_page 405 =200 $uri;
}
}测试:
sudo nginx -t
sudo systemctl restart nginx出现以下文件列表代表成功:
http://127.0.0.1:8008/📌 6. 各客户端访问#
✔ 桌面浏览器访问#
直接输入:
http://127.0.0.1:8008/输入 WebDAV 用户名和密码即可下载文件。
✔ Android:MX 文件管理器#
新增 WebDAV → 填写:
- 地址:
http://你的IP:8008/ - 用户名:刚才创建的
- 密码:刚才创建的
保存即可正常上传/下载。
✔ Alist 挂载 WebDAV#
Alist → 存储 → 添加 → WebDAV:
- URL:
http://你的IP:8008/ - 根路径:
/ - 用户名 / 密码:同上
- 代理:无
Alist 可正常执行:
- PROPFIND
- PUT
- DELETE
无报错。
📌 7. 常见错误与解决方案#
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
PROPFIND /: 405 | dav_ext 模块未加载 | 添加 load_module |
invalid number of arguments in load_module | 写成两个参数 | 改为单个模块路径 |
cannot open shared object file | 模块路径写错 | Arch 路径为 /usr/lib/nginx/modules |
failed get objs: PROPFIND /: 200 | 使用错误的 405 workaround | 必须使用 dav_ext 模块 |
| 手机能访问但 Alist 不行 | 同上 | 安装 dav_ext 后解决 |
📌 8. 安全性建议#
如果要对外开放 WebDAV:
- 必须用 HTTPS
- 强密码
- 建议只允许指定 IP 访问
- 建议放反向代理后面
如有需要,我可以帮你配 HTTPS + 防火墙限制。
📌 9. 完整部署脚本(可放到你的 Nginx 文档库后自动化安装)#
如果你需要,我可以为你生成:
- 一键安装 dav_ext
- 自动生成密码
- 自动写入完整配置
- 自动设置目录权限
运行一次即可完成 WebDAV 部署。
📚 Digital Library