Openresty 实现 WebDAV 功能 ,并且实现在 WebDAV 下多用户认证以及访问目录控制
0.介绍
基于Web的分布式编写和版本控制(WebDAV)是超文本传输协议(HTTP)的扩展,有利于用户间协同编辑和管理存储在万维网服务器文档。WebDAV由互联网工程任务组的工作组在RFC 4918中定义。
WebDAV协议为用户在服务器上创建、更改和移动文档提供了一个框架。WebDAV协议最重要的功能包括维护作者或修改日期的属性、名字空间管理、集合和覆盖保护。维护属性包括创建、删除和查询文件信息等。名字空间管理处理在服务器名称空间内复制和移动网页的能力。集合(Collections)处理各种资源的创建、删除和列举 (from wikipedia) wikipedia
nginx 中的 ngx_http_dav_module 模块提供了该功能的支持,nginx-dav-ext-module 主要是实现了 NGINX WebDAV 未实现的命令支持,包括:PROPFIND & OPTIONS 对于完整的 WebDAV 支持
通过 windows 自带的网络驱动器映射可以实现以下效果
1.Openresty 的编译与安装
OpenResty 是一个基于 Nginx 的 Web 平台,整合了诸如 LuaJIT、LuaNginxModule 等模块,所以我们用 Openresty 代替 nginx
因为webdav需要 ngx_http_dav_module 以及 nginx-dav-ext-module 的支持 ,所以我们要自己编译自己的Openresty
环境 Ubuntu 22.04
1.1 Openresty 源代码下载
通过 Openresty 官方网站获取最新的源代码并且解压
1 | wget https://openresty.org/download/openresty-1.21.4.1.tar.gz |
1.2 开发依赖安装
1 | apt-get update |
1.3 下载 nginx-dav-ext-module 并且配置编译时所添加的module
1 | cd openresty-1.21.4.1 |
1.4 编译并且安装
1 | gmake |
执行上述命令后会发现 Openresty 已经安装在 /usr/local/openresty 但是 openresty 命令还是不可用,可以通过添加软连接实现可以在任意文件夹使用 openresty 命令
1 | cd /usr/local/openresty/bin |
运行 Openresty 访问 http://localhost 将会出现 Welcome to OpenResty! 字样,代表 OpenResty 已经安装成功!
2. 最简单的 Webdav 实现
修改配置文件 /usr/local/openresty/nginx/conf/nginx.conf
1 | http { |
这样可以实现最基本的无认证,无动态目录WebDAV
这篇我们编译了带实现 webdav module支持的openresy ,并且实现了最简单的WebDAV,下一篇将会通过编写lua脚本实现多用户认证,以及动态控制访问目录的功能(应该会很快写出来)