共计 1691 个字符,预计需要花费 5 分钟才能阅读完成。
什么是webdav
webdav就是一个存储服务,各种应用都可以连接到它,允许应用直接访问内容,对其进行读写操作。
镜像地址bytemark/webdav – Docker 镜像
compose文件
最基本配置-单用户配置
version: '3.8'
services:
webdav:
image: bytemark/webdav
container_name: webdav
network_mode: bridge
restart: always
ports:
- "18080:80"
environment:
AUTH_TYPE: Digest #建议使用Digest, 在使用未加密的 HTTP 时,使用 `Digest` 认证(而不是 `Basic` )以避免在明文中发送密码。
USERNAME: admin
PASSWORD: admin123
LOCATION: /dav 客户端连接路径,默认为根目录
volumes:
- ./data:/var/lib/dav/data
参数说明
AUTH_TYPE:认证方式,可选Digest(HTTP)或Basic(HTTPS)
LOCATION : 客户端连接路径,默认为根目录/,可自定义,访问地址http://ip:port/自定义路径
进阶配置
多用户支持
使用htdigest生成多用户密码文件:
安装工具
yum insatll httpd-tools #CentOS
apt install apache2-utils #Debian
生成密码文件
htdigest -c user.passwd "WebDav" user1 #执行后会要求输入两次密码,生成密码是密文
参数说明
| 参数 | 作用 |
|---|---|
-c |
创建新密码文件(若文件已存在则覆盖) |
user.passwd |
生成的密码文件名(存储用户名和加密后的密码) |
"WebDAV" |
认证域(realm),需与 WebDAV 服务配置的域一致 |
user1 |
用户名(需手动输入密码) |
操作示例
生成密码文件(首次创建)
htdigest -c user.passwd "WebDAV" test1
#以下是输出
Adding password for test1 in realm WebDAV.
New password:
Re-type new password:
针对 bytemark/webdav镜像,默认认证域必须是WebDAV
修改认证域
可在进入容器内部conf/conf-enabled/dav.conf中修改AuthName的值,调整认证域
添加新用户
htdigest user.passwd "WebDAV" test2
验证密码文件
root@JD-VPS:~/test# cat user.passwd
test1:WebDAV:9ad98a10ceb2724b7e3c285c53ae5eb4
test2:WebDAV:1afd26210c987ba57a14e945be54c859
每行对应一个用户,格式:用户名:认证域:密码哈希
将user.passwd挂在至容器即可生效、compose文件中USERNAME与PASSWORD将失效
完整示例
version: '3.8'
services:
webdav:
image: bytemark/webdav
container_name: webdav
network_mode: bridge
restart: always
ports:
- "18080:80"
environment:
AUTH_TYPE: Digest #建议使用Digest, 在使用未加密的 HTTP 时,使用 `Digest` 认证(而不是 `Basic` )以避免在明文中发送密码。
USERNAME: admin
PASSWORD: admin123
LOCATION: /dav #客户端连接路径,默认为根目录
volumes:
- ./data:/var/lib/dav/data
- ./user.passwd:/user.passwd
/dav 就是LOCATION处设置的值
验证是否成功

默认字符集不支持中文会显示乱码

修复中文乱码
进入docker容器、添加IndexOptions Charset=utf-8添加到<Directory>中,然后重启容器

位置示意图

测试中文显示
中文正常显示

正文完