为Nginx 添加 WebDAV 支持

在编译Nginx知道有”–with-http_dav_module”这么一个参数,但真正让我要在实际受用于这个功能,说出来有些出人意外–解决使用安卓手机通过SFTP访问Mac OS X的视频资源出现的卡顿问题。

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。(更多了解

通过在编译时加入“–with-http_dav_module”可以启用对WebDav协议的支持,但要让功能完整,支持客户端的操作,还要引入另一个模块:ngx-dav-ext-module。关于对这个问题的描述,nginx官方文档有些轻描谈写:“WebDAV clients that require additional WebDAV methods to operate will not work with this module.”

下面是配置过程

下载ngx-dav-ext-module:

重新编译nginx:

编译及备份:

修改nginx.conf,大致如下:

关于认证加密,可以在这里生成,把生成的用户名密码按行写入指定的密码文件,比如上面的/var/www/dav/.htpasswd文件。

QQ20150112-1

更新nginx:

 客户端测试

(1)Mac下建议使用Tramsmit:

QQ20150112-2

可以上传下载修改文件了:

QQ20150112-3

 

(2)如果WebDAV未使用HTTPS协议,Windows7、Windows8是无法通过映射网络驱动器的方法进行挂载的。解决方法如下:

1、修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,把BasicAuthLevel 值改成2,即同时支持http和https,默认只支持https,
2、然后重启服务:
net stop webclient
net start webclient
3、映射网络驱动器即可

 

 

发表评论