使用 WebDAV 作为文件服务
2021-03-13 本文已影响0人
舌尖上的大胖
在传统的文件服务中,最容易想到的就是 FTP 服务。但是 FTP 有其不足,如明文传输,Google 也从 Chrome v82 起彻底停止支持 FTP 功能。FTPS 虽然安全但需要配置证书,也需要区分控制端口和数据端口,对于防火墙配置不够友好。SFTP 需要基于 SSH 用户,防火墙不一定会允许开放相关端口。
其中一个替代方案就是 WebDAV (Web Distributed Authoring and Versioning),并且有其优势:
- 基于 HTTP,容易穿越防火墙
- 可以使用 HTTPS 来传输数据
- 可以通过 Nginx 或 Apache 等 Web 服务器部署,也可以通过这些反向代理暴露服务
- 在客户端 WebDAV 获得了许多软件的支持,比如 Office 可通过 WebDAV 编辑远程文档
除了可以通过 Nginx 或 Apache 等 Web 服务器部署 WebDAV 服务,这里再提供个简易工具 hacdias/webdav。
下载可执行文件,配置文件放到相同目录下,运行程序即可。
配置:
# 服务相关配置
# 绑定的 IP
address: 0.0.0.0
# 端口
port: 0
# 是否需要支持授权
auth: true
# 是否需要 TLS 安全保护
tls: false
# 证书
cert: cert.pem
# 私钥
key: key.pem
# URL 前缀
prefix: /
# 默认用户设置,这里的设置会被用户个性化设置覆盖
# 默认用户的访问目录
scope: /default_webdav_path
# 是否允许修改
modify: true
# 规则
rules: []
# 用户设置
# 这里是个数组,每个为每个用户做不同设置
# 这些设置会覆盖前面的默认用户设置
users:
- username: admin
password: admin
# 用户的访问目录
scope: /a/different/path
# 以加密形式设置用户信息
- username: encrypted
password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
# 通过环境变量读取用户信息
- username: "{env}ENV_USERNAME"
password: "{env}ENV_PASSWORD"
- username: basic
password: basic
modify: false
rules:
- regex: false
allow: false
path: /some/file
- path: /public/access/
modify: true
(完)