在集成流水线时,遇到一个场景:服务器需要和其他平台交换文件。最简单直接的方式是 scp/sftp,但公司安全策略禁掉了机器间的 OpenSSH 访问。试过 NFS、SMB、临时搭个 HTTP 共享,要么同样被安全策略挡掉,要么配置太繁琐。最后选定了 WebDAV + Rclone 的组合:
- 在目标机器上用 Apache 开 WebDAV 共享目录
- 在需要操作的机器上通过 Rclone 读写这个共享目录
这套方案属于内部工具级别,不是生产环境部署。实际使用中,我拿一台测试机(macOS 或 Windows)跑 WebDAV 服务,另一台 macOS 服务器用 Rclone 进行文件的上传、下载,稳定且轻量,也符合公司的安全要求。
在 Windows 上搭建 Apache + WebDAV
Windows 下需要自己安装 Apache,macOS 自带,只需要启用相关模块。下面主要记 Windows 的步骤,macOS 操作类似,但共享目录最好放在 Shared 文件夹下。不设账号密码,允许匿名登录;要加认证的话改对应配置就好。
Apache 安装与基本配置
从 Apache Lounge 下载对应系统的压缩包,解压到一个无空格、无中文的目录,比如 D:\Apache。
打开 D:\Apache\Apache24\conf\httpd.conf,做几处修改:
# 修改 ServerRoot,必须与解压路径一致
Define SRVROOT "D:/Apache/Apache24"
ServerRoot "${SRVROOT}"
# 改端口,避免冲突(比如 8080)
Listen 8080
# 末尾添加 ServerName,端口对应
ServerName 127.0.0.1:8080
管理员 cmd 里测试配置:
cd /d D:\Apache\Apache24\bin
httpd -t
# -> Syntax OK
启动 Apache:
httpd -k start
# 或者注册为 Windows 服务,开机自启
httpd -k install
net start Apache2.4
浏览器访问 http://localhost:8080,看到 'It works!' 就说明 Apache 跑起来了。
修改配置后需要重启:
httpd -t # 检查语法
httpd -k restart # 重启
# 或者服务方式
net stop Apache2.4
httpd -t
net start Apache2.4
启用 WebDAV 模块
在 httpd.conf 里去掉下面几行前面的 #:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so
# 以下用于密码认证(本场景未用,但先开着无妨)
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authz_core_module modules/mod_authz_core.so
创建共享目录与锁文件路径
管理员 cmd:
mkdir D:\webdav_share
mkdir D:\Apache\Apache24\var
webdav_share 是实际共享的文件夹,var 对应 WebDAV 锁数据库路径。
D 盘一般不用单独设置权限;如果不是 D 盘,右键 webdav_share → 属性 → 安全,添加 Everyone 并赋予完全控制。如果 Apache 以服务运行,还要给 或 服务账户同样权限。

