龙空技术网

基于nginx的webdav服务

禹过留声 919

前言:

此刻我们对“nginx设置索引”大约比较关心,你们都需要学习一些“nginx设置索引”的相关知识。那么小编在网上搜集了一些关于“nginx设置索引””的相关资讯,希望我们能喜欢,我们一起来了解一下吧!

最近将终端从 item2 迁移到 tabby 了,原因就在于后者是跨平台的。但是碰到了跨平台软件的通病就是配置的同步问题。为了永久解决类似的问题,所以研究了一下 WebDAV,并且搭建了服务来给跨平台软件同步基本配置。

介绍

之所以研究 WebDAV 是因为跨平台的终端 tabby 需要同步终端配置和连接,在插件 cloud-settings-sync 的支持下能够将全平台的配置同步到 WebDAV 服务上。相较于同样基于 HTTP 1.1 的静态资源服务,它更加的安全,特别是针对多端对同一个资源进行修改时。而相较于文件传输协议 FTP,它基于 HTTP 1.1,使用浏览器或基本命令 curl 即可对文件进行读写,而不需要专门的软件或客户端,非常的方便。所以就通过 Nginx 搭建了 WebDAV 服务来提供类似网盘的能力。

基本概念

在构建 WebDAV 以及使用它之前,需要了解它的起源以及优势。

定义

WebDAV[1](英语:Web-based Distributed Authoring and Versioning)中文名是基于Web分布式编写版本控制。它是超文本传输协议 HTTP 的扩展,有利于用户间协同编辑和管理存储在万维网服务器文档。WebDAV 最终在 2007 年由互联网工程任务组(IETF)的工作组在 RFC 4918 中定义。

具体点来说, WebDAV 在原先 HTTP 1.1 所支持的 GET, POST, HEAD 等常见的 HTTP 标准方法外,还添加了一些新的方法,比如维护作者或修改日期等属性方法:PROPPATCH, PROPFIND,处理覆盖保护相关的资源锁定方法:LOCK, UNLOCK等。从而实现对网络资源的分布式编写以及版本控制。

而通俗一点儿来说,WebDAV 是 HTTP 的加强版,能够直接查看,编辑,下载网络资源。同时还提供用户名和密码来控制访问,保证资源的安全性。非常适合做网盘系统的协议

起源

WebDAV 创始于 1996 年,当时加州大学尔湾分校博士毕业生 Jim Whitehead 与 W3C 共同主办了两场会议,与感兴趣的人讨论万维网上的分布式创作问题。作为万维网之父的 Berners Lee 对网络的最初看法是涉及阅读和写作的介质。事实上,Berners Lee 的第一个 Web 浏览器(WorldWideWeb)其实既可以查看也可以编辑网页;但是,随着网络的成长,对大多数用户来说成为了只读介质。Jim Whitehead 和其他志同道合的人想超越这个限制。

W3C 会议决定成立一个 IETF 工作组,因为新的工作将导致对 HTTP 进行扩展,而当时 IETF 已经开始对 HTTP 进行标准化。随着协议的工作开始,很明显,同时处理分布式编写和版本控制将涉及太多的工作,并且任务将不得不分开。WebDAV 小组专注于分布式创作,将版本控制留作以后研究。在 1999 年互联网工程指导组(IESG)接受 RFC 2518 的增量更新之后,WebDAV 工作组在 2007 年 3 月结束了其工作。当时还没有完成的其他扩展,比如 BIND 方法,已经由其独立作者独立于正式工作组完成。

优势

•便携性

WebDAV 最大的优势就是便携性,因为 Web 已经成为 Internet 的基础,所以 WebDAV 可以普适目前所有情况。任何浏览器或者简单的 curl 命令 都可以操作服务上的文件,不需要额外安装客户端工具。

•天然网盘

相较于 HTTP 只能访问单个的静态资源,使用 WebDAV 协议的服务不仅支持读,还可以写入。此外还可以将资源当做文件来进行管理,简直就是天生的网盘协议。

•安全性

基于 WebDAV 的服务不仅提供了用户密码鉴权认证,还可以针对资源进行加锁以防止多个客户端同时篡改同一个资源,从而导致数据不一致的问题。

实战

Apache 和 Nginx 都是支持 WebDAV,可作为 WebDAV 文件共享服务器软件。当然也可以使用专门的 WebDAV 软件部署。其中 Nginx 对 WebDAV 的支持不是太全面,所以功能比较少,不过简单的网盘功能已经提供。

Nginx

Nginx 启用基本的 WebDAV 只需要在编译配置时加上 --with-http_dav_module 即可启用基本的 WebDAV 功能, 这些基本功能包括 PUT/DELETE/MKCOL/COPY/MOVE 等。如果想要 WebDAV 能够支持来自应用的同步操作,还需要额外安装 nginx-dav-ext-module 模块。

安装

对于 Ubuntu 系统可以执行以下命令来进行安装和校验。

# 安装 dav 对应的模块sudo apt -y install nginx nginx-extras libnginx-mod-http-dav-ext# 验证包含模块 http_dav_module 和 http-dav-extnginx -V | grep -qE "http_dav_module|http-dav-ext"
配置

配置包括两步,第一步是 Nginx 的配置,详细可参考下面的配置。其中关键点有

•配置域名,并且同时开通 HTTP(80) 和 HTTPS(443)来访问服务: 。[HTTPS服务搭建参考][devops_https]。•数据目录配置在 /data/webdav/data•认证配置文件在 /data/webdav/.credentials.list

server {  listen 80;  server_name your.site;  rewrite ^(.*)  permanent;}server {    listen  443 ssl;    server_name your.site;    ssl_certificate /etc/letsencrypt/live/your.site/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/your.site/privkey.pem;    ssl_session_timeout 5m;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;    ssl_prefer_server_ciphers on;    # 认证方式    auth_basic              "Authenticated Users";    # 存放认证用户名、密码文件(确认有对应权限)    auth_basic_user_file    /data/webdav/.credentials.list;    # webdav服务访问的根目录    root /data/webdav/data;    index index.html index.htm index.nginx-debian.html;    access_log   /var/log/nginx/webdav.log;    error_log   /var/log/nginx/webdav.log;    location / {       # 启用 WebDav 的一些关键字       dav_methods PUT DELETE MKCOL COPY MOVE;       # 启用 WebDav 的一些扩展关键字用于支持应用访问       dav_ext_methods PROPFIND OPTIONS;       # 设置 WebDav 目录下新增文件的默认权限       dav_access user:rw group:rw all:r;       # 创建文件夹时自动创建路径上不存在的文件夹       create_full_put_path  on;       # 设置报文最大长度便于文件传输,这里为8MB       client_max_body_size 8m;       # 让 nginx 自动生成索引页面,避免 403 错误       autoindex on;    }}

第二步是设置登陆用户和密码将其保存到配置指定文件中。

## 登陆密码### 添加一个用户,username 为用户名echo -n 'username:' | sudo tee -a /data/webdav/.credentials.list### 设置用户的密码openssl passwd -apr1 | sudo tee -a /data/webdav/.credentials.list
验证

验证方式有两种,一种通过浏览器访问 , 通过用户名密码进行访问。另一种是通过 curl 命令进行验证。

# 验证## 上传curl --user username:password  -T fileName## 下载curl --user username:password  > tmpFile
WebDAV 服务

webdav[2] 是 GitHub 上开源的项目,基于 Go 语言实现,不仅跨平台,还支持 ARM 架构,可在㠌入式设备中部署 WebDAV 服务器。目前 Nginx 够用,所以这块暂时没有进一步探究。

扩展

最后提供一些支持 WebDAV 的软件列表,以供后续探索

软件名

使用中

描述

Zotero

[X]

一款文献管理工具

PDF Expert

[ ]

pdf 文件阅读工具,使用 webdav 可以直接阅读网盘中的 pdf 文件

keepass

[X]

支持 webdav 的密码管理器

Documents

[ ]

IOS 系统文件管理工具,支持 webdav

静读天下

[ ]

支持多种电子书籍格式的阅读软件

MWeb

[X]

专业的 Markdown 写作软件

书伴

[ ]

一款支持 OCR 文本识别功能的书籍管理应用

参考文献

1.webdav 维基百科[3]2.webdav Server[4]3.nginx 配置 WebDAV[5]4.HTTPS服务搭建参考[6]

References

[1] WebDAV:

[2] webdav:

[3] webdav 维基百科:

[4] webdav Server:

[5] nginx 配置 WebDAV:

[6] HTTPS服务搭建参考:

标签: #nginx设置索引