[db:标题]

摘要:前言:现代 Web 服务器与经典协议的碰撞 在自建私有云存储的方案中,Caddy 与 WebDAV 的组合一直被视为“极简主义”的代表。 Caddy 是一款使用 Go 语言编写的现代 HTTP 服务器。与传统的 Nginx 或 Apache
前言:现代 Web 服务器与经典协议的碰撞 在自建私有云存储的方案中,Caddy 与 WebDAV 的组合一直被视为“极简主义”的代表。 Caddy 是一款使用 Go 语言编写的现代 HTTP 服务器。与传统的 Nginx 或 Apache 相比,它最大的特点是原生支持自动化与模块化架构。它不仅处理效率极高,且配置文件(Caddyfile)语法极其接近自然语言,大大降低了维护成本。 WebDAV (Web Distributed Authoring and Versioning) 则是一门基于 HTTP 1.1 的经典扩展协议。它将 Web 空间转变为一个可读写的网络磁盘,允许用户像操作本地文件一样,对服务器上的文档进行编辑、移动和同步。虽然它是一门“古老”的协议,但由于其极高的跨平台通用性,至今仍是 Zotero、Obsidian、Notability 等生产力工具进行数据同步的首选。 将两者结合,本质上是利用 Caddy 强大的处理能力和简单的配置逻辑,为本地静态文件插上 WebDAV 的“翅膀”。本文将介绍如何通过 Caddy 快速构建一个既能满足专业软件同步,又兼顾浏览器直观预览的 WebDAV 服务环境。 1. 获取 Caddy 访问 Caddy 官网下载页 平台选择 Windows amd64 下方插件列表搜索并勾选 caddy-webdav,点击 Download 你会得到一个 caddy_windows_amd64_custom.exe,下载后重命名为caddy.exe 2. 安全第一:生成 Bcrypt 加密密码 Caddy 出于安全考虑,不允许在配置文件中写明文密码。我们需要使用 Caddy 内置的命令来生成一串哈希值。 在 caddy.exe 所在文件夹打开命令行(PowerShell)。 输入以下命令(将 你的密码 换成你想设置的): ./caddy.exe hash-password --plaintext 你的密码 重要: 复制输出的那串以 $2a$ 开头的字符,稍后要填入配置文件。 3. 编写 Caddyfile 核心配置 在 caddy.exe 同级目录下新建一个文本文档,重命名为 Caddyfile(无后缀),填入以下“避坑版”代码: { order webdav before file_server } :8081 { # 1. 身份认证 (注意:必须使用 caddy hash-password 生成的 bcrypt 字符串) basic_auth /webdav/* { admin "$2a$14$WwxNYJVaFHJZ3BHRmYmpF.CoeqRYffYV5bmDFRZuJTt34YyS6RdhC" } route /webdav* { # 统一剥离前缀 uri strip_prefix /webdav # 3. 匹配浏览器请求 @browser { method GET not header Depth * } # 4. 浏览器显示网页列表 handle @browser { file_server browse { root "D:/WebDAV" } } # 5. 其余(WebDAV 客户端)交给 webdav 模块 handle { webdav { root "D:/WebDAV" } } } } 4. 启动与验证 在命令行运行:./caddy.exe run。 浏览器验证:访问 http://localhost:8081/webdav/。输入账号 admin 和你的明文密码。看到蓝色的文件列表说明成功。 结语 相比传统服务器,Caddy 的配置极其优雅。虽然 WebDAV 是一门古老的协议,但在 Caddy 的加持下,它依然是本地磁盘云化最快、最稳的方式。