Apache2 配置 webdav
网上的教程都讲的不清楚,这里我花费了一个晚上和一个上午,终于算是搞出来了。发出来供大家参考。
(稍有遗憾的是,怎么样可以复用到80端口上,以 http://ip/webdav 这样的形式存在,还没试出来)
正常安装 Apache2 服务器。这里我的版本是 2.4.38
(1)在 /etc/apache2/sites-available 目录下,新建文件 webdav.conf
内容如下:(效果:访问地址 http://ip:8000/webdav ,需要用户名密码登录)
DavLockDB /home/cc/server/webdav
<VirtualHost *:8000>
ServerAdmin cc@localhost
DocumentRoot /home/cc/server/webdav
Alias /webdav /home/cc/server/webdav
<Directory "/home/cc/server/webdav">
DAV on
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "cc"
AuthUserFile /home/cc/webdav.passwd
Require valid-user
</Directory>
</VirtualHost>
ServerAdmin、DocumentRoot、Directory 这些都可以根据自己的需要修改,上面的只是我个人的配置。
(2)将配置文件软链接到 sites-enabled 目录
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/webdav.conf .
(3)修改 /etc/apache2/ports.conf 文件,加入对 8000 端口的侦听
Listen 80
Listen 8000
(4)添加用户密码
htpasswd -c webdav.passwd cc
- “-c” 表示创建新文件;如果只是在已有文件上新增用户,那么请不要带这个选项。
- “webdav.passwd” 表示密码文件的名称(或路径),注意跟 Apache 配置文件中的 AuthUserFile 路径一致!!!
- “cc” 表示要登录的用户名,注意跟 Apache 配置文件中的 AuthName 一致!!!
(5)重启 Apache2 服务
sudo /etc/init.d/apache2 restart
(6)访问测试
http://localhost:8000/webdav
nginx 配置 webdav
根据网上资料显示,目前 nginx 完整的 webdav 支持需要第三方插件,并且需要源码编译。有点懒,不想折腾了,遂放弃。
有需要的小伙伴可以参考 GitHub - arut/nginx-dav-ext-module: nginx WebDAV PROPFIND,OPTIONS,LOCK,UNLOCK support
第三方 webdav 服务
之前有网友推荐过一个独立的 webdav 程序,具体请访问:
GitHub - hacdias/webdav: Simple Go WebDAV server.
它的问题在于,我实际使用后发现它可能存在内存溢出。
如果只是测试研究,不用于生产环境,还是可以试试的。
这个程序十分简单,将可执行文件 webdav
和配置文件 config.yaml
放在同一目录下,执行:
./webdav &
这是一份可用的配置文件(关键内容请自行更改):
# 监听任意网卡,多网卡可指定对应ip
address: 0.0.0.0
port: 8081
# 如果无需验证填 false
auth: true
# 如果不需要 https 则填 false
tls: true
# https证书和密钥,如果 tls 为 false,cert 和 key 不需要
cert: /data/www/cert/szhome.xf1024.com_nginx/cert.pem
key: /data/www/cert/szhome.xf1024.com_nginx/cert.key
# 访问前缀,建议默认
prefix: /
# 如果 auth 为 false 生效,文件共享的路径
scope: /data/users/public
# 是否允许修改
modify: true
rules: []
# 跨域设置
cors:
enabled: true
credentials: true
allowed_headers:
- Depth
allowed_hosts:
- http://localhost:8081
allowed_methods:
- GET
exposed_headers:
- Content-Length
- Content-Range
# 用户信息,如果 auth 为 true 生效
users:
- username: user1
password: 123456
scope: /data/users/2021
- username: user2
password: 654321
scope: /data/users/202