
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 或连接超时。

评论(0)