Logo 📚 Digital Library

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 /: 405dav_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 部署。