windows版nginx默认不支持webdav,需使用第三方预编译版或自行编译启用;配置前须用nginx -v | findstr dav确认模块存在,再在location中设置dav_methods、create_full_put_path等参数,并确保目录权限与webclient服务正常。

Windows 下 Nginx 本身不自带 WebDAV 模块,需通过编译启用或使用第三方预编译版本(如 nginx-win 或 带 WebDAV 的定制版)。官方 Windows 二进制包默认禁用 ngx_http_dav_module,因此直接配置会报错 unknown directive "dav_methods" 等。
确认 Nginx 是否支持 WebDAV
运行以下命令检查模块是否已启用:
nginx -V 2>&1 | findstr dav若无输出,说明当前 Nginx 不含 WebDAV 支持。也可查看输出中的 --with-http_dav_module 是否存在。常见 Windows 发行版中,只有部分社区维护版本(如 nginx-webdav-win)默认开启该模块。
启用 WebDAV 的配置写法(前提:Nginx 已支持)
在 nginx.conf 的 server 或 location 块中添加如下配置:
-
开启 WebDAV 方法:使用
dav_methods明确允许的操作(如PUT、DELETE、PROPFIND等) -
设置根目录权限:确保
client_body_temp_path和 WebDAV 目录可写,且 Windows 用户(如运行 nginx 的账户)有完全控制权限 -
启用自动创建目录:添加
create_full_put_path on;,否则 PUT 多级路径(如/a/b/c.txt)会失败 -
关闭日志干扰(可选):WebDAV 请求可能触发大量 405/401 日志,可用
error_log off;或单独重定向
示例配置片段:
location /webdav/ {
alias D:/nginx/webdav/;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
client_max_body_size 2G;
auth_basic "WebDAV Area";
auth_basic_user_file D:/nginx/conf/htpasswd;
}
Windows 客户端连接方式
无需额外安装客户端,系统原生支持:
-
资源管理器映射网络驱动器:右键“此电脑” → “映射网络驱动器”,输入 URL 如
http://localhost/webdav/,勾选“登录时重新连接”。注意:需启用 WebClient 服务(net start webclient),且仅支持 HTTP(非 HTTPS)直连;HTTPS 需改注册表启用(不推荐) -
命令行测试:用
curl验证基础功能(需支持 WebDAV 的 curl 版本):
curl -X PUT http://localhost/webdav/test.txt --data "hello" - 第三方客户端:Cyberduck、RaiDrive、NetDrive 等支持完整 WebDAV 功能(包括 HTTPS、Digest 认证、断点续传)
常见问题与绕过方案
若无法获取支持 WebDAV 的 Windows Nginx:
- 改用 Linux 子系统(WSL2) 运行标准 Nginx,共享 Windows 目录,再通过
localhost访问 —— 兼容性最好 - 临时替代:用 Python 的 http.server + webdav(如
pip install aiohttp-webdav-server)快速搭建最小 WebDAV 服务用于开发测试 - 生产环境建议迁移到 Apache HTTP Server for Windows,其 WebDAV 模块稳定且文档完善,配置更直观
不复杂但容易忽略:Windows 下文件权限、WebClient 服务状态、URL 路径末尾斜杠一致性,都会导致 405、403 或连接超时。










