怎样为Nginx添加WebDAV支持

2020年7月5日 | 分类: 【技术】

【介绍】

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:

cd /root/nginx-1.19.5 && wget https://github.com/arut/nginx-dav-ext-module/archive/master.zip && unzip master.zip

重新编译nginx:

参考:https://amon.org/nginx
参考:https://github.com/arut/nginx-dav-ext-module

cd /root/nginx-1.19.5 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_v2_module  --with-openssl=./openssl-1.1.1c --add-module=./ngx_cache_purge-2.3 --add-dynamic-module=./headers-more-nginx-module --add-dynamic-module=./ModSecurity-nginx --with-http_dav_module --add-dynamic-module=./nginx-dav-ext-module-master
make && make install

【配置】

添加动态模块:

编辑:/usr/local/nginx/conf/nginx.conf ,添加:

load_module modules/ngx_http_dav_ext_module.so;

添加网站及目录:

编辑:/usr/local/nginx/conf/servers/webdav.com.conf

	server	{
		listen 80;
		listen 443 ssl http2;
		server_name webdav.com www.webdav.com;
		client_max_body_size 20M;

		ssl_certificate /etc/letsencrypt/live/webdav.com/fullchain.pem;
		ssl_certificate_key /etc/letsencrypt/live/webdav.com/privkey.pem;
		ssl_session_timeout 5m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
		ssl_prefer_server_ciphers on;

		location / {
			autoindex on;
			dav_methods PUT DELETE MKCOL COPY MOVE;
			dav_ext_methods PROPFIND OPTIONS;
			create_full_put_path on;
			root /usr/local/nginx/html/webdav.com/;
			include /usr/local/nginx/conf/rewrite/webdav.com.conf;
			dav_access user:rw group:rw all:r;
			auth_basic "Authorized Users Only";
			auth_basic_user_file /usr/local/nginx/conf/htpasswd/webdav.com.conf;
			}

		}

添加用户:

编辑:/usr/local/nginx/conf/htpasswd/webdav.com.conf

Admin:$1$5h/pBpa8$SIAAfaJaOHQqZeGenPrgv/

在线生成工具:https://whoisdog.com/tool/htpasswd-generator/

添加转写规则,强制加密访问:

编辑:/usr/local/nginx/conf/rewrite/webdav.com.conf

if ($server_port !~ "^443$"){
	set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
	rewrite ^/.*$ https://$server_name$uri redirect;
}

【设置】

主要设置项目包括:
1. 网址:webdav.com
2. 协议/端口:http:// 80 ;https:// 443
3. 用户/密码

【软件】

Windows自带文件管理器:

文件管理器 可以上传;IE/FF 可以浏览

RaiDrive软件:

链接:https://pan.baidu.com/s/1loF-kKEYqYOcEDvQd03GyA
提取码:xou3

Linux

Mount方法:(需要安装davfs2,注意权限)

sudo apt-get install davfs2
sudo mount -t davfs http://webdav.cn:8000 /home/user/webdav/

客户端方法:

sudo apt-get install cavader
Cavader http://webdav.cn:8000

参考:https://www.cnblogs.com/herryzz/p/10522749.html
参考:https://www.cnblogs.com/longware/p/4511599.html?ptvd

【排错】

报错:./configure: error: the HTTP XSLT module requires the libxml2/libxslt

参考:https://blog.csdn.net/lemqs0123/article/details/105942882

yum install libxml2 libxml2-devel libxslt libxslt-devel

【参考】

编译:https://www.cnblogs.com/Dy1an/p/11227796.html
编译:https://blog.csdn.net/zsx0728/article/details/103777226
编译:https://www.cnblogs.com/tinywan/p/6965467.html

排障:https://www.bbsmax.com/A/xl56wBKYdr/