要想Nginx支持WebDAV,需要手动添加http_dav_module和nginx-dav-ext-module模块。http_dav_module模块是nginx默认的模块,但是也需要手动编译。
这两个模块编译之后,我们可以使用nginx建立一个WebDAV服务器,可以进行上传下载等基本的操作,还可以设置基于用户名和密码的身份验证的访问。我们还是基于宝塔面板来设置和部署。
具体的设置和部署
1、前言
这里是宝塔面板7.x版本nginx的编译安装模块,注意,nginx一定要是编译安装。模块的项目地址如下:
github:https://github.com/arut/nginx-dav-ext-module
2、Nginx文件备份
编译前先将已经安装的Nginx文件进行备份,通过ps命令查看nginx文件的路径。以下所有步骤都以自身nginx路径为准。使用如下命令查找路径。
ps -elf | grep nginx
命令执行之后,我们会得到宝塔面板nginx的具体路径:/www/server/nginx/sbin/nginx
所以,我们继续执行下面的命令:
cd /www/server/nginx/sbin/ #进入到路径 cp nginx nginx.bak #备份nginx
3、下载Nginx fancyindex模块
git clone https://github.com/arut/nginx-dav-ext-module.git
4、拷贝至src目录
cp -R ./ngx-fancyindex /www/server/nginx/src
5、nginx -V
我们需要知道目前nginx编译了哪些模块,具体如下:
cd /www/server/nginx/src nginx -V
注意:这里的‘V’是大写,我们看到目前的的模块,然后全部复制到一个记事本中备用。然后在最后面添加:”--with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module
“
6、开始编译
具体的编译代码如下,nginx版本是1.17.6,是宝塔面板的可以完全复制过去了。注意需要进入到:/www/server/nginx/src
编译才会有效。
./configure --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module
回车之后,输入代码:
make
7、nginx文件替换
make完成后将系统中原有的nginx用重新编译生成的nginx文件替换,替换后重启nginx使新编译nginx生效,具体命令如下:
rm -rf /www/server/nginx/sbin/nginx cp objs/nginx /www/server/nginx/sbin/ service nginx restart
执行命令nginx -V
我们可以看到两个模块已经编译成功,如图:
8、配置webdav服务器
模块安装好之后,就可以配置一个webdav,我们利用宝塔面板来做这件事情还是容易的。
8.1》新建网站:
在宝塔面板中新建网站,额,你事先要解析好域名,这个就不用多说了吧。
8.2》网站配置
网站新建好之后,我们需要配置网站,在配置文件中放置如下代码:
具体的放置的位置如图:8.3》设置密码访问
还是在网站设置里面在”网站目录“中设置密码,即可满足给你的webdav服务武器使用用户名和密码访问的要求。
保存之后,就可以使用了。
9、下载客户端以及简单使用
9.1》下载软件
大鸟这里用Cyberduck 来作为客户端使用。
下载地址:https://cyberduck.io
9.2》配置客户端连接
直接看图吧,因为大鸟这里没有申请ssl,所以直接用80端口链接,如图:
9.3》简单使用
连接之后,我们就可以把自己多余的服务器作为网盘来使用了,文件可以直接复制url分享,上传直接拖拉即可,还是很方便的,如图:
如果你要分享,可以复制url直接分享,如图:
10、最后
利用宝塔面板来搭建webdav服务器的话还是很方便的,我们只需要安装2个模块就可以工作了,我们还可以申请免费的ssl证书,让连接更安全。
感觉webdav和FTP有点像,都是上传文件,但是webdav是使用的HTTP协议,这在复杂的网络环境中很有优势(比如防火墙只开通了80端口),而且可以使用https来加密文件,用FTP一般是没加密的,而且在IOS系统上的很多软件都是支持webdav的。这样使用webdav就可以在所有设备上同步共享文件了。
参考资料:
- http://nginx.org/en/docs/http/ngx_http_dav_module.html
- https://github.com/arut/nginx-dav-ext-module

2020年3月2日 上午10:07 1F
博主把宝塔面板研究得透透的了。学习。
2020年3月2日 上午11:01 B1
@ MAY的SEO博客 真的是瞎倒腾,没啥的,不要捧杀了。
2020年3月2日 下午9:31 2F
希望可以用
2020年3月5日 上午12:17 3F
厉害,相当好
2020年3月10日 上午1:28 4F
正好一直在找这个功能,好多同步需要,谢谢大佬
2020年3月16日 上午9:51 5F
感谢分享
2020年3月16日 上午10:01 6F
另外步骤3 4的ngx-fancyindex那个是复制之前文章忘改了?
2020年3月16日 下午12:23 7F
找了一早上通过宝塔搭建webdav的方法,试试
2020年3月17日 上午5:03 8F
感谢楼主分享
2020年3月17日 上午5:04 9F
感谢楼主分享了
2020年3月19日 下午6:25 10F
感谢作者
2020年3月21日 下午1:01 11F
博主大人,可以出个在WIN版的宝塔下的教程吗?
谢谢了
2020年3月30日 下午11:54 12F
这个教程不错 要研究下
2020年3月31日 下午1:37 13F
感谢分享
2020年4月4日 下午5:25 14F
感谢楼主分享了
2020年4月5日 下午2:28 15F
看看能不能用
2020年4月5日 下午2:29 16F
来学习下
2020年4月10日 上午6:43 17F
为什么回复了还是看不到了?
2020年4月21日 上午2:56 18F
网上大多都是Apache,很少有Nginx的,支持
2020年4月21日 上午9:29 19F
感谢分享,试一试
2020年4月21日 下午1:10 20F
博主把宝塔面板研究得透透的了。学习。
2020年4月29日 下午9:45 21F
学无止境 多学习经验
2020年5月2日 上午8:21 22F
非常不错
2020年5月8日 下午9:59 23F
试试能否使用
2020年5月10日 下午6:52 24F
感谢楼主分享,学习一下
2020年5月13日 下午3:29 25F
感谢博主 正需要
2020年5月22日 下午2:20 26F
厉害厉害,非常好
2020年5月29日 下午6:45 27F
学习一下
2020年5月31日 上午12:36 28F
拿代码emm,最近搭私有云和离线下载
2020年6月6日 上午10:28 29F
谢谢分享,正好需要
2020年7月1日 上午11:07 30F
我就看看