这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

通过 WebDAV 将服务器全部或某个文件夹挂载到电脑上当 网络硬盘

建站资源 Toyo 64评论
广告
本文最后更新于 2018年11月5日 14:23 可能会因为没有更新而失效。如已失效或需要修正,请留言!

前段时间有个人说让我写写 Caddy WebDAV插件的教程,然而我都没听过这玩意,研究了一下还有点意思。

简单介绍

WebDAV 是 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写、重命名等操作,相当于一个简单的网盘功能。


一些软件支持 WebDAV ,可以直接把某些文件放在 WebDAV 服务器内或者从 WebDAV 服务器内读取文件,而今天我就来介绍一下将 WebDAV 服务器映射成 Windows 的网络驱动器(网络硬盘/网盘),其他系统也支持这种操作,但是我没有相应系统所以只介绍 Windows 系统。

玩法的话,比如你的服务器上面安装的有 Aria2 之类的BT下载软件,那么可以直接把 BT下载文件夹映射到 Windows本地,这样的话 BT文件 下载后,直接就能读取或者播放了,当然传输速度取决于你与服务器之间的连接速度。


很多HTTP服务程序都支持 WebDAV,比如Nginx ,而我们用更简单的方式去创建 WebDAV 服务。

安装 Caddy(创建 WebDAV 服务)

如果你要同时安装多个 Caddy 插件,那么请修改下面的命令格式为:bash caddy_install.sh install http.webdav,xxx,xxx(逗号分隔多个插件名称)。

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.webdav

安装Caddy成功后,继续新建一个用于使用的虚拟主机文件夹,例如 file(可以自己改):

mkdir /usr/local/caddy/www
mkdir /usr/local/caddy/www/file
# 这个文件夹就是你要映射到本地电脑的文件夹,你可以创建一个新的,或者跳过该步骤直接使用其他文件夹。

配置 Caddy(配置 WebDAV 服务)

首先,我们先讲一下,WebDAV扩展各个参数(WebDAV插件官方说明)。

webdav [url] {
    scope       path
    modify      [true|false]
    allow       path
    allow_r     regex
    block       path
    block_r     regex
}
  1. url 是要设置的网站URL。默认是 / (比如 /doubi 那么访问地址就是 http://xxxx.xxx/doubi )。
  2. scope 是要浏览的服务器文件目录路径,可以使相对或绝对路径。默认是 ./ 。
  3. modify 表示是否允许编辑/修改文件. 默认为允许 true
  4. allow 和 block 用于允许或拒绝访问指定文件或目录,可以是相对路径。可以使用 dotfiles 来允许或拒绝以 . (点)开头的每个文件的访问权限(以 . 开头的文件往往都是隐藏文件)。
  5. allow_r 和 block_r 是上面选项的变体,区别是可以使用正则表达式。

配置示例

以下示例中,虚拟主机文件夹为:/usr/local/caddy/www/file,配置时请自行根据需求修改。

示例域名为:toyoo.pw (注意修改)。

示例用户名为:admin (注意修改)。

示例密码为:password (注意修改)。

注意:以下示例中都是用的标准端口 HTTP(80) HTTPS(443) ,端口是可以修改的,只需要在域名后面加上 :8888 这样的端口号即可(例如 http://toyoo.pw:8888)。

IP HTTP

本示例是,绑定虚拟主机为IP(即通过IP访问),HTTP协议(80端口,端口可以改)。

点击展开 查看内容

域名 HTTP

本示例是,绑定虚拟主机为域名(即通过域名访问),HTTP协议(80端口,端口可以改)。

点击展开 查看内容

域名 HTTPS

本示例是,绑定虚拟主机为域名(即通过域名访问),HTTPS协议(443端口,端口可以改)。

点击展开 查看内容

域名 HTTP重定向 HTTPS(仅手动指定SSL证书和密匙)

本示例是,域名HTTP重定向为HTTPS。

当你是手动指定 SSL证书和密匙 来配置的话,Caddy只会监听 443端口(https),并不会自动设置 80端口(http)的重定向,如果要做重定向的话,可以这样做:

点击展开 查看内容


当你已经配置完上面步骤后,那就要启动 Caddy 了。

/etc/init.d/caddy start
# 如果启动失败可以看Caddy日志: tail -f /tmp/caddy.log

启动成功后,我们访问 WebDAV 地址看看,这里我是按照示例中的 IP HTTP 做的,访问后会提示输入用户名和密码,最后看到的就是如下图所示。

Caddy 使用说明

启动:/etc/init.d/caddy start

停止:/etc/init.d/caddy stop

重启:/etc/init.d/caddy restart

查看状态:/etc/init.d/caddy status

查看Caddy启动日志: cat /tmp/caddy.log

Caddy配置文件位置:/usr/local/caddy/Caddyfile

Caddy自动申请SSL证书位置:/.caddy/acme/acme-v02.api.letsencrypt.org/sites/xxx.xxx(域名)/

Windows 映射网络驱动器

点击展开 查看更多

其他说明

修改注册表以支持连接 HTTP协议 的 WebDAV

因为考虑到安全性的问题,所以 Windows 默认是不能通过 HTTP协议 连接 WebDAV 服务器的,但是注册表中可以修改这个。

点击展开 查看更多

重新连接时的用户名密码说明

重新连接时,可以看到 Windows 记住的密码长度不对,这实际上是正常的,不需要修改也不需要勾选 记住我的凭据,直接点击 确定 按钮即可。

点击展开 查看更多

手动启动 WebClient 服务方法

一般情况下,WebClient(WebDAV) 服务都是关闭的,当你使用 网络驱动器 功能时,系统会自动启动该服务,但是如果因为未知原因为启动失败,那么可以这样手动启动服务。

点击展开 查看更多

删除网络驱动器

删除网络驱动器也很简单,不要在 资源管理器 中直接右键断开连接,这样可能会导致网络驱动器残留,请按这个方法删除(断开)。

点击展开 查看更多

转载请超链接注明:逗比根据地 » 通过 WebDAV 将服务器全部或某个文件夹挂载到电脑上当 网络硬盘
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (52)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(64)个小伙伴在吐槽
  1. 怎么用Caddy自带的HTTPS加Cloudflare呢 IOS上Documents 和 nPlayer 都可连上。 Infuse连不上,Linux上的Kodi也连不上。 把Cloudflare DNS 那设置成DNS only 就可连上。 那请问有没有其他方法能让用Caddy自带的HTTPS同时Cloudflare的CDN可用呢?
    embryo2018-09-19 11:35 回复
    • 本身就没有冲突啊。
      Caddy配置HTTPS套CDN 和 Nginx配置HTTPS套CDN 有什么区别吗?
      Caddy 只是会自动帮你申请和配置SSL证书,证书依然是你的,和 Nginx 配置 HTTPS 没区别。
      Toyo2018-09-19 13:43 回复
      • 问题是连不上啊,有的可以连上有的不行。 因为我看到别的地方的一句,不要开启任何的CDN,因为CDN会使得Caddy自动申请域名证书的时候失效。 不知道是不是这个原因
        embryo2018-09-19 16:46 回复
        • 这是对的,任何自动申请SSL的软件或脚本,都是需要DNS解析验证的(申请证书的域名解析IP与发起证书申请的服务器IP一致),你套了CDN,IP不一样就会审核不通过,自然无法自动申请SSL证书。
          Toyo2018-09-19 21:56 回复
  2. 按 没有SSL证书和密匙 的配置设置好后,无法启动caddy :cry: ,日志显示: Activating privacy features... 2018/09/11 06:14:36 get directory at 'https://acme-v02.api.letsencrypt.org/directory': failed to get json "https://acme-v02.api.letsencrypt.org/directory": Get https://acme-v02.api.letsencrypt.org/directory: x509: failed to load system roots and no roots provided
    king2018-09-11 06:19 回复
  3. 大佬请问如果服务器(VPS)上安装了Nextcloud、seafile等云端系统,是否还可以同时在此服务器(VPS)上安装翻墙服务(shadowrocks、v2ray)呢?小白上路,望解答(/ω\)~
    樂小音2018-07-18 08:06 回复
    • 可以,只要互相之间端口不冲突就行了(比如 80 443,还有这些云盘系统的同步端口)。
      Toyo2018-07-18 10:42 回复
      • 谢谢大佬指教★彡
        樂小音2018-07-18 19:59 回复
  4. WebDAV 貌似会限制分享的文件大小
    feng2018-05-19 21:32 回复
    • windows下不建议直接映射驱动器来管理文件,会有各种限制且拖慢资源管理器。支持webdav的客户端很多,同步类的有GoodSync(前几天在限免),SyncBackPro等,支持直接上传下载的有Cyberduck(免费)、CarotDAV(免费)、Air Explorer等,安卓下有大名鼎鼎的es管理器和solid explorer。用这些客户端管理webdav及传输大文件都要稳定得多。
      aliotsky2018-05-21 11:36 回复
      • Windows自带的WebClient服务不太好用,有文件大小限制而且重启后经常连不上(需要断开重新映射),可以考虑用Raidrive之类的第三方软件管理WebDAV
        lalala2018-07-31 16:35 回复
  5. 能不能写一个用nginx原生的webdav支持的教程呢?
    loren2018-05-17 14:02 回复
  6. 从Windows拷贝大文件的时候经常会出现如下错误: 错误 0x80070079: 信号灯超时时间已到
    lalala2018-05-12 14:50 回复
  7. 拉文件的时候windows提示 文件大小超过允许的限制 如何解决?
    Roach2018-05-09 18:20 回复
  8. 为什么我服务器已经运行了,外网访问ip什么都没有呢
    marara2018-05-06 22:59 回复
    • 浏览器访问提示什么错误?
      Toyo2018-05-07 14:50 回复
  9. 可以用auth加密码
    zhzh2018-05-05 11:23 回复
  10. 我的256M的VPS,不敢上NextCloud怕内存不够。看了大佬的教程茅塞顿开,部署了Caddy和php环境,且在同一目录启用webdav和filebrowser。前者在PC和手机上有广泛的客户端支持,弥补了后者在平台上的短板,也方便传输大文件;后者运行起来轻便快捷,相当于精简版的NextCloud。我试着上传下载了一个3G多的文件,整个过程中VPS的负荷不高,令人满意。
    aliotsky2018-05-03 22:12 回复
  11. 我现在的vps装着宝塔一键部署的环境,用的apache,还装着一键脚本的aria2,然后按照这个教程一路走下来就是打不开webdav的页面,什么报错也没有,端口也没被占用;然后我新开了个vps,按教程走什么问题都没有,所以我估计是跟vps上面装的东西怼了。请问怎么办啊。。。
    shmily2018-04-29 20:23 回复
    • 打开 webdav 网页显示什么?caddy 运行正常吗?
      Toyo2018-04-30 13:58 回复
  12. windows有密码一直连不上,去掉密码。显示不支持该请求。用nplayer都能连接上,但播放不了,surge里看是http 401没有授权。
    Suns952018-04-23 09:12 回复
  13. Error during parsing: Unexpected EOF 这个是什么错误? 怎么排除呢?
    xman2018-04-19 11:38 回复
    • 这是哪里提示的错误?
      Toyo2018-04-19 16:08 回复
  14. 可以 做HTTP 下载站吗 这个 还是有更好的教程 谢谢哈
    古本2018-04-18 17:13 回复
  15. 能不能机能用WebDAV 将服务器全部或某个文件夹挂载到电脑上,又能用 Caddy FileBrowser扩展 非常简单的部署 私人网盘/在线文件管理器https://doub.io/jzzy-3/#%E5%AE%89%E8%A3%85%20Caddy
    abchihi2018-04-17 20:17 回复
    • 在同一个虚拟主机配置(就是域名{xxx}括号内的范围)中理论上是可行的,不过我没试过。。
      当然如果是分开做两个虚拟主机配置,那么是肯定可行的,这个我做过。
      Toyo2018-04-18 13:18 回复
      • 分开做两个虚拟主机配置, 能否说的详细点?
        abchihi2018-04-20 09:14 回复
        • 你的评论往下面翻一点,就看到一个类似的要求了。
          Toyo2018-04-20 18:00 回复
  16. 已经配置好Aria2了,按照教程一步一步操作,发现WebDev和WebUIAria2两者不能同时使用(采用http域名访问的形式),作为一名纯小白,想请教一下作者应该怎么修改才能实现访问域名可以进入WebUIAria2同时也能映射网络驱动器呢?
    Ethan2018-04-17 17:58 回复
    • 先把你的配置文件内容贴出来我看看是否是哪里有问题(适当打码)。
      Toyo2018-04-17 20:01 回复
      • http://xxxxx { root /usr/local/caddy/www/ timeouts none gzip basicauth / admin password webdav { scope /usr/local/caddy/www } } CaddyFile如何设置才能在打开域名之后能够打开Aria2 WebUI同时也能映射网络驱动器呢?
        Ethan2018-04-19 10:42 回复
        • 不知道为什么,WebDAV 插件没办法这样设置(这样设置意味着访问 http://ip 就是网页,访问 http://ip/webdav 就是WebDAV页面),我会向作者反馈的。
          :80 {
          	webdav /webdav {
          		scope /xxx
          	}
          }
          
          但是你可以这样配置,实现一样的效果:
          http://xxx.xx/webdav {
          	timeouts none
          	basicauth / admin password
          	webdav {
          		scope /usr/local/caddy/www
          	}
          }
          http://xxx.xx {
          	root /usr/local/caddy/www/
          	timeouts none
          	gzip
          }
          
          Toyo2018-04-19 16:32 回复
  17. 修改Caddyfile后就不能打开Caddy了,日志里一直显示"error presenting token: presenting with standard HTTP provider server: Could not start HTTP server for challenge -> listen tcp :80: bind: address already in use",端口我已经改了,还是这样,希望博主帮忙看看
    Siup2018-04-16 10:43 回复
    • 如果你要让 Caddy 自动申请配置SSL正式,那么必须空出 80端口用于SSL证书申请验证服务器验证。
      Toyo2018-04-16 15:11 回复
      • 感谢博主,解决了,nginx占了80端口
        Siup2018-04-18 14:53 回复
  18. 这个太棒了,我750g的大盘鸡,终于不用吃灰了,映射为网络驱动器真方便
    棒棒哒2018-04-15 20:08 回复
  19. 博主你好,请问下你这个文章中的,点击展开查看更多是如何实现的,能简单说下嘛,谢谢
    南思2018-04-14 20:36 回复
    • 插件名:Toggle box
      Toyo2018-04-14 20:54 回复
      • 感谢.
        南思2018-04-14 22:00 回复
  20. 使用的IP HTTP配置,服务器端caddy已启动,网页可访问,注册表已修改,webclient服务已启动,但是在映射网络驱动器时输入账户密码无法成功连接,错误提示是无法找到网络名,大佬可有什么建议?另外,大佬的ip貌似还是暴露了,再“重新连接是的用户名密码说明”那张图上!
    lgsen2018-04-14 10:30 回复
    • 那你尝试一下 Caddy 不配置用户名和密码(删掉 basicauth / admin password),看看能否正常连接。
      Toyo2018-04-14 13:51 回复
      • 用nplayer能连上,播放不了视频,http 401
        Suns2018-04-23 01:26 回复
        • 我也想连接nplayer,请问你连接上了吗
          marara2018-05-06 22:55 回复
  21. 这个好玩,待会儿玩一波试试 :shock:
    Rein2018-04-12 11:42 回复
  22. 有木有windows教程啦 :wink: :wink:
    爪哇直立人2018-04-12 10:03 回复
    • 这不就是 windows 教程吗?
      Toyo2018-04-12 13:32 回复
  23. 那么...像城通网盘这样开放webdav的服务,有什么可以利用的嘛 :shock:
    chanca2018-04-11 22:35 回复
  24. 这个好玩,记得IIS上也有个WebDAV协议
    岩兔站2018-04-11 20:49 回复
  25. 建议写一个基于nginx的webdav的教程,caddy实在是小众。
    氪金好友2018-04-11 19:16 回复
    • 小众就不能用了?我之所以写 Caddy 就是因为安装使用简单,很适合新手小白使用,对于没有建站需求,只是喜欢折腾着玩的人来说,Caddy 很好用。
      Toyo2018-04-11 19:30 回复
      • 还有更简单的?像我这样总是带着移动硬盘办公的,也是累啊,有这样的就OK了,如果有更简单的,告诉我一下,哪天有机会试试
        RAY2018-04-12 00:53 回复
        • 额,我这个教程里用的就是 Caddy 的 WebDAV 扩展。
          Toyo2018-04-12 00:54 回复
    • 嗯,可能我觉得原生的更干净,性能更高
      loren2018-05-24 11:32 回复
  26. 已经装过了caddy,怎么单独安装这个插件呢?
    Nanyuan2018-04-11 18:20 回复
    • 无法单独安装,但是你可以更新Caddy ,依然是用我的脚本安装,不过命令后面要加上插件名字(文章中的安装caddy步骤),会自动覆盖安装。
      Toyo2018-04-11 18:59 回复
    • 踩过坑的来告知 :wink: 用toyo的脚本装过filebrowser插件的话,添加webdav插件的命令是bash caddy_install.sh install http.webdav,http.filemanager ,只install http.webdav的话filemanager就没了
      小肥2018-04-20 15:55 回复
      • 这真的是个大坑,多谢提醒
        abchihi2018-04-21 14:58 回复
      • 兄弟,按你说的代码还是不对啊,是不是http.webdav,http.filemanager 这两个之间不是用逗号隔开的啊?
        Liuben2018-09-19 23:18 回复
  27. webDav配合keepass+keeweb来使用,自己搭建密码保存服务器。
    Lenno2018-04-11 17:37 回复
    • WebDAV的玩法有很多,我也只是简单查了下,发现可以做网络驱动器(网盘),就觉得有点意思写个教程。
      Toyo2018-04-11 19:00 回复
      • 逗比大佬能否考虑一下出一个WebDAV+filemanager配套使用的教程呢,非常感谢。
        Liuben2018-09-19 23:25 回复
  28. 第一第一
    zn'blog2018-04-11 16:42 回复