windows版nginx默认不支持webdav模块,需使用openresty for windows或第三方编译版;确认支持后配置dav_methods并注意权限、路径、编码等限制。

Windows 下的 Nginx 默认不支持 WebDAV 模块(即 dav_methods 指令),因为官方 Windows 版本编译时未启用 --with-http_dav_module。若需在 Windows 上使用 PUT、DELETE、COPY、MOVE 等 WebDAV 方法,必须使用**自行编译或第三方提供的支持 WebDAV 的 Nginx for Windows 二进制包**。
确认当前 Nginx 是否支持 dav_methods
执行以下命令检查模块列表:
nginx -V 2>&1 | findstr "dav"
若输出中不含 http_dav_module,说明当前版本不支持 WebDAV 功能,配置 dav_methods 将导致启动失败(报错:unknown directive "dav_methods")。
获取支持 WebDAV 的 Windows 版本
推荐以下两种可靠方式:
-
使用 OpenResty for Windows:基于 Nginx,预编译启用了
http_dav_module,下载地址为 openresty.org/download(选择 Windows zip 包); -
使用第三方维护版 Nginx(如 nginx-win):部分社区项目(如 GitHub 上的
nginx-win)提供已启用 WebDAV 的 Windows 编译版,注意核对 release notes 中是否包含--with-http_dav_module; - 不建议自行用 MSVC/MinGW 编译——Windows 下 Nginx 编译链复杂,且 WebDAV 依赖文件系统权限与锁机制,在 NTFS 上需额外处理
ngx_http_dav_module的create_full_path和lock行为。
启用 dav_methods 的基本配置示例
确认版本支持后,在 nginx.conf 的 location 块中添加:
location /webdav/ {
alias C:/nginx/html/webdav/;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_path on;
dav_access user:rw group:rw all:r;
autoindex on;
}
关键说明:
-
alias路径末尾需带斜杠,且对应目录在 Windows 上必须存在并赋予 Nginx 进程(如SYSTEM或运行用户)读写权限; -
create_full_path on允许自动创建多级子目录(如PUT /webdav/a/b/c.txt); -
dav_access控制文件权限,Windows 下主要影响 ACL 继承行为,建议设为宽松策略便于调试; - WebDAV 客户端(如 Windows 资源管理器、Cyberduck、rclone)连接时需使用
http://localhost/webdav/,注意结尾斜杠不能省略。
常见问题与限制
即使模块可用,Windows 平台仍有如下实际约束:
-
不支持 LOCK/UNLOCK:Nginx 的
http_dav_module在 Windows 下无法实现原子锁,故PROPFIND中的锁相关属性无效; -
中文路径可能出错:URL 编码与 Windows 文件系统编码(GBK/UTF-8)不一致时,
PUT含中文名的文件易报400 Bad Request,建议统一使用 UTF-8 并在客户端正确编码; -
无内置认证集成:
dav_methods不处理鉴权,必须配合auth_basic或 JWT/Proxy_pass 到后端认证服务; -
DELETE 不递归:Nginx 仅支持删除空目录,非空目录需先清空再删,否则返回
409 Conflict。










