IIS 架设 WebDAV 服务器
测试: IIS on Windows 7 / Windows 10
在控制面板 windows 功能里启用 IIS 以及 IIS 项里的以下子项:Webdav, http basic authentication
IIS - Default web site - :
- 右侧边栏 View Virtual Directories: 可以增加几个虚拟目录。
- Directory Browsering : 右边栏点击 Enable 启用目录浏览。(推荐)
- Authentication : 增加 basic authentication 并设为 enabled
- MIME Types: 增加一个 ".*" 扩展名的文件类型,MIME 设为 "application/octet-stream" (也可以直接改 web.config 配置文件,参考下面)。IIS只允许访问这个列表中存在的后缀类型文件,所以加个通配符MIME以允许访问所有类型文件。
- WebDav Authoring rules: 增加规则 Path: *; All content; Allow access to Specified roles or user groups: administrators; Permissions: Read, Source (注意 source 权限必须勾选。否则 windows 资源管理器自带的 webdav client 连接时能够列出目录文件,但无法读取/写入任何文件,报错 0x80070780。坑爹的是其他 WebDAV 客户端这种情况下完全能够正常连接)
IIS 默认网站 (Default Web Site) 文件夹位置:
- WWW-root: %SystemDrive%\inetpub\wwwroot
- 日志: %SystemDrive%\inetpub\logs\LogFiles
修改 %SystemDrive%\inetpub\wwwroot\web.config 这个 IIS 默认网站配置文件,增加 allowDoubleEscaping="true" 配置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".*" mimeType="application/octet-stream" />
</staticContent>
<directoryBrowse enabled="true" />
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
</configuration>
如果不增加这个配置,WebDAV / IIS 访问含有 "+" 等特殊字符的文件夹时会报 404 错误(double escape sequence inside a url : The request filtering module is configured to deny a request that contains a double escape sequence)。
IIS 里 Default Web Site - 侧边栏 restart 重启网站使配置更改生效。
(不推荐) Windows 资源管理器里映射 webdav 服务器为本地路径
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
修改以下配置:
BasicAuthLevel: 默认为 1 仅允许连接 ssl 的 webdav 服务器。修改为2允许连接 http 的 webdav服务器。
FileSizeLimitInBytes: 允许访问的 WebDav 服务器里文件最大大小。默认值仅为 50000000 (47MB)。修改为(DWORD)允许的最大值 4294967295 (4TB)。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient\Parameters]
"FileSizeLimitInBytes"=dword:ffffffff
"BasicAuthLevel"=dword:00000002
然而这种方式最大的问题是 windows 资源管理器自带的 webdav client 不支持 Content-Range 的 stream,访问文件会先下载整个文件。这导致其根本无法用于 stream 播放 webdav 服务器里的视频。目前此问题无解决方法
(推荐) rclone 挂载 webdav
首先 rclone 里创建 webdav 的 remote "webdav-server"
address: http://1.2.3.4
user:
pass
rclone mount --no-modtime --max-read-ahead 256M --buffer-size 64M --dir-cache-time 24h --poll-interval 5m --read-only --vfs-cache-mode writes webdav-server:/ W: