必须引入nginx-dav-ext-module并正确编译集成,因原生http_dav_module仅支持PUT/DELETE/MKCOL等基础方法,缺少PROPFIND、LOCK、UNLOCK、PROPPATCH等客户端必需的WebDAV扩展方法。

要让 Nginx 源码编译后完整支持 WebDAV 文件管理(比如挂载为网络驱动器、用 Windows 映射、Cyberduck 或 RaiDrive 正常读写),光启用原生 http_dav_module 不够——它只支持 PUT/DELETE/MKCOL 等基础方法,缺少 PROPFIND、LOCK、UNLOCK、PROPPATCH 等客户端必需的 WebDAV 扩展方法。必须引入第三方模块 nginx-dav-ext-module 并正确编译集成。
确认依赖和前置准备
编译前确保系统已安装必要开发工具和库:
- Debian/Ubuntu:
apt install -y build-essential libpcre3-dev libssl-dev zlib1g-dev libxml2-dev libxslt-dev - CentOS/RHEL:
yum install -y gcc pcre-devel openssl-devel zlib-devel libxml2-devel libxslt-devel - 下载 Nginx 源码(推荐稳定版如 1.24.x 或 1.26.x,避开 1.25.0+ 因与 dav-ext 不兼容)
- 下载
nginx-dav-ext-module(GitHub 官方仓库:https://github.com/arut/nginx-dav-ext-module,建议 v3.0.0 或对应 Nginx 版本的 tag)
configure 参数必须包含三项核心模块
进入 Nginx 源码目录后,运行 ./configure 命令时,以下参数缺一不可:
-
--with-http_dav_module:启用原生 WebDAV 基础模块 -
--add-module=/path/to/nginx-dav-ext-module:指定扩展模块路径(绝对路径,不能是相对路径) -
--with-http_ssl_module:WebDAV 客户端(尤其 Windows)强制要求 HTTPS,此模块用于后续配置 TLS
其他推荐参数(非必须但实用):--with-http_v2_module(提升大文件传输效率)、--prefix=/usr/local/nginx(自定义安装路径)。
编译安装与验证
执行标准编译流程:
-
make -j$(nproc)(加速编译) sudo make install
验证是否成功加载模块:
-
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -E 'with-http_dav_module|dav_ext'应同时输出两行 - 若仅出现
with-http_dav_module而无dav_ext,说明--add-module路径错误或模块源代码不匹配版本
配置文件中启用 WebDAV 功能
编译只是第一步,还需在 nginx.conf 的 location 块中显式启用全部方法:
- 使用
alias(非root)指向真实存储目录,避免路径拼接错误 dav_methods PUT DELETE MKCOL COPY MOVE;dav_ext_methods PROPFIND PROPPATCH OPTIONS LOCK UNLOCK;- 必须开启
autoindex on; autoindex_format xml;(多数客户端依赖 XML 目录列表) - 加上
auth_basic和auth_basic_user_file防止未授权写入
临时目录也要提前创建并授权:mkdir -p /tmp/nginx_webdav && chown www-data:www-data /tmp/nginx_webdav(用户组名按实际 Nginx 工作用户调整)。


















