nginx原生http_dav_module不支持propfind等核心方法,无法满足客户端挂载需求;必须安装nginx-dav-ext-module并验证其存在,再配合alias、autoindex_format xml、dav_methods与dav_ext_methods等完整配置方可正常使用。

nginx 原生的 http_dav_module 不能当 WebDAV 服务用——挂载失败、只读、列表为空,八成是它没支持 PROPFIND,不是配置写错了。
怎么确认 Nginx 真的支持完整 WebDAV 协议
很多人执行 nginx -V 看到 with-http_dav_module 就以为齐活了,其实只是能处理 PUT/DELETE。客户端(Windows 映射驱动器、macOS Finder、iOS 文件 App)真正要的是 PROPFIND、OPTIONS、LOCK 这些方法。
必须验证扩展模块是否存在:
nginx -V 2>&1 | grep -o dav_ext
无输出?说明没装 nginx-dav-ext-module,此时任何配置都无效。
-
nginx-dav-ext-module不兼容1.25.0+,建议锁定1.22.x或1.24.x编译 - 编译时必须加
--add-module=/path/to/nginx-dav-ext-module,光有--with-http_dav_module没用 - CentOS 7.9 是常见部署环境,但已于 2024 年 6 月停止维护,仅适合迁移或离线测试
location 配置里 root 和 alias 到底怎么选
错选会导致 404、写入到错误路径,甚至越权写入上级目录。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
关键看 URL 路径结尾有没有斜杠:
- 如果 URL 是
/webdav/(结尾有斜杠),必须用alias /data/webdav/;—— 注意末尾斜杠要对齐 - 如果 URL 是
/webdav(无斜杠),才可用root /data/;,此时请求/webdav/file.txt映射到/data/webdav/file.txt -
alias不继承上级location路径,root会拼接完整路径,混用极易出错
典型错误配置:
location /webdav/ {<br> root /data/webdav; # ❌ 请求 /webdav/test.txt → 实际写入 /data/webdav/webdav/test.txt<br> dav_methods PUT;<br>}
必须写的配置项和容易漏的硬性要求
缺一不可,否则客户端识别失败或挂载后无法浏览目录。
-
autoindex_format xml是硬性要求:客户端靠 XML 解析目录结构,设成html或省略直接导致挂载失败 -
dav_methods至少包含PUT DELETE MKCOL COPY MOVE;dav_ext_methods必须显式写出PROPFIND PROPPATCH MKACTIVITY CHECKOUT -
create_full_path on:否则客户端新建多层目录(如/a/b/c)会报 409 Conflict -
dav_access user:rw group:rw all:r:权限不设宽泛点,Windows/macOS 客户端常因权限不足拒绝挂载
挂载失败报错“找不到网络路径”或列表为空怎么办
这不是网络不通,是协议层响应缺失或格式错误。
- Windows 提示“找不到网络路径” → 检查是否返回了
PROPFIND响应,用curl -X PROPFIND http://your-server/webdav/ -v看状态码和 body - macOS 显示“连接服务器时发生错误” → 查 Nginx error log,常见是
client_body_temp权限不对或磁盘满 - iOS 文件 App 列表为空 → 90% 是
autoindex_format xml没设,或 XML 响应里<href></href>路径没带协议+域名(需配absolute_redirect off或反向代理 header 修正)
真实问题往往藏在模块缺失和路径映射这两个地方,别急着调 auth 或 https,先跑通 curl -X PROPFIND 和 nginx -V | grep dav_ext。










