WsgiDAV 4.3 介绍与选型指南
WsgiDAV 4.3 介绍与选型指南:官方资料溯源的 Python WSGI WebDAV 服务器定位、v4.3.5 版本基准、provider/域控制器/中间件管线架构、认证与锁管理特性、官方快速上手示例、适用限制,以及与 hacdias webdav、Nginx、Apache httpd、Rclone 的量化选型对比(2026-10-19 实查,未做本地安装实测)。
WsgiDAV 4.3 介绍与选型指南
目标:基于 WsgiDAV 官方公开资料(GitHub 官方仓库 mar10/wsgidav 及其 Releases、官方文档站 mar10.github.io/wsgidav)梳理其定位、架构、功能与选型口径,并与 hacdias webdav、Nginx、Apache httpd、Rclone 做量化对比。本文为认知类文档,仅做官方资料溯源,不做本地安装与运行实测;全部版本号、日期与社区数据于 2026-10-19 联网实查。
一、信息基准
1.1 查询说明
- 查询日期:2026-10-19。
- 信息获取方式:纯官方资料溯源(mar10/wsgidav 官方仓库 Releases 与 CHANGELOG、官方文档站),本文不做本地安装与运行实测。
- 版本结论:本次介绍的版本为 WsgiDAV 4.3 系列,最新稳定版 v4.3.5(2026-06-27 发布)。
1.2 版本依据表
| 项目 | 实查结果(2026-10-19) | 来源 |
|---|---|---|
| 最新稳定 | v4.3.5(2026-06-27) | github.com/mar10/wsgidav/releases |
| 4.3 系列时间线 | v4.3.3(2024-05-04)→ v4.3.4(2026-05-24)→ v4.3.5(2026-06-27) | 同上 |
| 代码仓库 | mar10/wsgidav | github.com/mar10/wsgidav |
| GitHub stars | 1245 | 仓库页面(2026-10-19 实查) |
| 开源许可 | MIT | 仓库 license 字段 |
| 官方文档 | https://mar10.github.io/wsgidav/ | 仓库 homepage |
1.3 官方来源清单
| 来源 | 地址 |
|---|---|
| 源码仓库 | https://github.com/mar10/wsgidav |
| Releases 页 | https://github.com/mar10/wsgidav/releases |
| 官方文档站 | https://mar10.github.io/wsgidav/ |
| PyPI 发布页 | https://pypi.org/project/wsgidav/ |
二、软件概述
本文介绍的是 WsgiDAV 4.3(最新稳定版 v4.3.5,2026-06-27 发布)。
WsgiDAV 是一个用 Python 实现的通用 WebDAV 服务器(RFC 4918),同时也是一个可嵌入的 WSGI 应用:它既能以自带命令行 wsgidav 独立运行,也能部署到任意 WSGI 服务器(CherryPy、Gunicorn、uWSGI 等)之上,与 Web 服务器栈复用同一套中间件体系。项目由 Martin Wendt(mar10)长期维护,以 MIT 许可开源。
在 GitHub 上 WsgiDAV 拥有 1245 stars(2026-10-19 实查)。它的定位是「Python 生态里的标准 WebDAV 组件」:文件系统之外还支持把数据库、对象存储等抽象为 WebDAV 共享(provider 扩展点),常用于文档协作、网盘类应用、Notion/Obsidian 等客户端的远程挂载后端,以及作为自研应用的嵌入式文件服务层。
三、核心架构
3.1 WSGI 应用与服务形态
WsgiDAV 核心是一个 WSGI 应用对象,独立运行时默认使用 CherryPy 内置服务器承载;生产部署可托管给任意 WSGI 容器(官方文档「Running WsgiDAV behind a WSGI server」章节)。这一形态使其可位于 Nginx/Apache 反代之后,复用 TLS 终结与压缩。
3.2 请求管线与扩展点
| 组件 | 说明 |
|---|---|
| provider(共享提供者) | 将 URI 空间映射到资源后端:文件系统(fs_provider)为默认实现,可自定义抽象后端 |
| domain controller(域控制器) | 用户与口令来源:simple_dc(配置文件)、nt_dc(Windows 域)、自定义实现 |
| 中间件 | 错误处理、日志、请求体解析、锁管理、属性管理、目录浏览(dir_browser)等 WSGI 中间件链 |
| lock_manager / property_manager | RFC 4918 的 LOCK/UNLOCK 与 DEAD 属性(PROPFIND/PROPPATCH)支持 |
3.3 配置驱动
行为由 YAML/JSON 配置文件(wsgidav.yaml)集中管理:host/port、共享映射(provider_mapping)、认证(simple_dc 的 user_mapping)、目录浏览、日志级别与 SSL 等均通过配置声明(官方配置文档)。
四、功能特性
4.1 标准 WebDAV 能力
实现 RFC 4918 核心方法集(GET/PUT/PROPFIND/PROPPATCH/MKCOL/COPY/MOVE/DELETE/LOCK/UNLOCK),支持 ETag、深度查询与客户端锁;配合目录浏览器提供网页端浏览界面(官方文档)。
4.2 认证与安全
支持 Basic/Digest/NTLM 认证(经由域控制器抽象),可配置 HTTPS(或交由反代终结 TLS);匿名与只读共享可通过 user_mapping 细粒度声明(官方认证文档)。
4.3 4.3 系列状态
4.3 系列处于持续维护状态:2026 年内发布 v4.3.4(2026-05-24)与 v4.3.5(2026-06-27)两个版本(官方 Releases 实查),以缺陷修复与依赖更新为主;4.x 为当前主力稳定线(官方 CHANGELOG)。
4.4 可编程扩展
作为 WSGI 应用与 Python 库,可在自研应用中内嵌 WebDAV 能力:自定义 provider 把业务对象暴露为 WebDAV 树,或自定义 domain controller 对接既有用户体系(官方文档「Custom providers」章节)。
五、快速上手
以下示例转述自官方文档站与仓库 README,本文不做本地实测。
5.1 安装
官方推荐通过 PyPI 安装:
pip install wsgidav cheroot
5.2 最小启动(官方 README 示例)
# 以匿名只读方式快速启动,服务当前目录
wsgidav --host=0.0.0.0 --port=8080 --root=/tmp --auth=anonymous
浏览器访问 http://localhost:8080/ 即可看到目录浏览页,WebDAV 客户端亦可用同一地址挂载。
5.3 配置文件方式
正式使用建议以 YAML 配置声明共享、认证与日志(官方示例结构):
host: 0.0.0.0
port: 8080
provider_mapping:
"/": "/path/to/share"
simple_dc:
user_mapping:
"*": true # 匿名;也可为 { "username": {"password": "..."} }
完整配置与部署文档见官方文档站:https://mar10.github.io/wsgidav/ 。本站亦有实测运维文档可参考:《WsgiDAV 配置参数详解》 与 《WsgiDAV Docker 与 WSGI 服务器部署指南》。
六、适用场景与限制
6.1 适用场景
- Python 技术栈的自研系统需要内嵌 WebDAV 文件服务(provider/domain controller 可编程)。
- 文档协作、Obsidian/Notion 类客户端远程存储、网盘后端等中小规模共享。
- 需要将数据库、对象存储等非文件系统后端抽象为 WebDAV 树的定制场景。
- 已有 WSGI 部署体系(Gunicorn/uWSGI/CherryPy)希望复用统一运维栈的团队。
6.2 限制与注意事项
- 纯 Python 实现,大文件吞吐与高并发不如 Nginx/C 器实现,不适合海量文件高并发分发。
- 生产暴露公网时务必启用 HTTPS 与强认证(默认匿名示例仅用于本地体验)。
- 功能聚焦 WebDAV 协议本身,不提供 WebDAV 之外的文件同步、分享链接等应用层功能。
- 4.3.5 距上一小版本约一个月,维护节奏以小步修复为主,重大新特性收敛。
七、同类选型对比
7.1 候选概览
| 工具 | 定位 | 开源许可 |
|---|---|---|
| WsgiDAV 4.3 | Python WSGI WebDAV 服务/库 | MIT |
| hacdias webdav 5.17 | Go 单二进制 WebDAV 服务器(配置驱动) | MIT |
| Nginx(ngx_http_dav_module) | Web 服务器内置的基础 WebDAV 模块 | BSD-2-Clause |
| Apache httpd(mod_dav) | Web 服务器内置的标准 WebDAV 模块 | Apache-2.0 |
| Rclone(serve webdav) | 云存储工具内置的 WebDAV 服务端出口 | MIT |
7.2 量化对比(2026-10-19 实查)
| 维度 | WsgiDAV 4.3.5 | hacdias webdav v5.17.1 | Nginx 1.28.3 stable | Apache httpd 2.4.69 | Rclone v1.75.2 |
|---|---|---|---|---|---|
| GitHub stars | 1245 | 5926 | 31914 | 4041 | 60394 |
| 最近版本 | v4.3.5(2026-06-27) | v5.17.1(2026-10-10) | stable 1.28.3(nginx.org 当前)/ mainline 1.31.7 | 2.4.69(官方下载页) | v1.75.2(2026-10-09) |
| 版本节奏 | 小步维护(年 2-3 版) | 月度级别高频小版本 | stable/mainline 双线 | 按需安全/缺陷补丁 | 约 6 周 minor + 补丁 |
| 技术栈 | Python(WSGI) | Go | C | C | Go |
| WebDAV 完整度 | RFC 4918 核心 + 锁 + 属性 + 目录浏览 | 锁与规则、单二进制易部署 | 仅 PUT/DELETE/MKCOL/COPY/MOVE,无锁/属性 | mod_dav + mod_dav_fs 完整基础能力 | 只读出口为主(serve webdav) |
| 可编程性 | WSGI 中间件 + 自定义 provider/域控 | 用户/权限规则配置,改代码需 Go | 模块生态 | 模块生态 | 后端驱动复用其云存储支持 |
(stars 与发版时间取自各项目官方仓库页面/官网 2026-10-19 实查;许可见各自仓库 license 字段。)
7.3 选型建议
需要「WebDAV 作为库嵌入 Python 应用」或自定义非文件系统后端的,WsgiDAV 几乎是唯一开箱即用的选择;想要一个配置完即走、单二进制部署的个人/团队文件共享,选 hacdias webdav;仅需要给静态站点补充 PUT/DELETE 上传能力的,用 Nginx 自带 dav 模块(注意其不支持锁);已有 Apache 栈且需要标准 WebDAV(如与 Windows 网页文件夹/挂载兼容)可启用 mod_dav;核心诉求是把本地目录或云存储「以 WebDAV 协议对外提供」(含 S3/网盘后端),用 Rclone serve webdav 最省事。
八、参考链接
- 官方仓库:https://github.com/mar10/wsgidav
- Releases 页:https://github.com/mar10/wsgidav/releases
- 官方文档站:https://mar10.github.io/wsgidav/
- PyPI:https://pypi.org/project/wsgidav/
- hacdias webdav 仓库:https://github.com/hacdias/webdav
- Nginx 下载页:https://nginx.org/en/download.html
- Apache httpd 下载页:https://httpd.apache.org/download.cgi
- Rclone 仓库:https://github.com/rclone/rclone