使用Nginx搭建WebDav的注意事项补充(流媒体访问)

前言

搭建WebDav的两种最简单方式:

  • Linux:Nginx

  • Winodws:IIS

前两天在给小朋友准备一些学习(视频、音频等)的资料,让她在电视机或者iPad上可以自己看。

就想着用WebDav搭建一个影音库,里面只有这些学习的音视频,也没办法看其他东西,而由于她的资料不是很多,干脆就放在Ubuntu服务器上,24h开机也随时都能访问。

WinNAS因为有8块硬盘,24h开机太费电。

过程

方案一:Nginx

Ubuntu Server搭建WebDav的首选方案肯定是Nginx,轻量。

但是按照网上的方法,最终搭建完成后,浏览器可以正常访问,但是手机平板无法访问,只能最终放弃。

方案二:Jellyfin或者Plex

这类媒体资源库其实还是非常不错的,搭建后也能正常访问,但是我又不是很想固定在一个应用上面,相当于以后又要多维护一个应用,暂时先Pass,还是再回去研究一下Nginx搭建的WebDav为什么手机平板无法访问吧~

方案三:Nginx

回来继续研究Nginx,网上搜资料,继续看看是什么原因。

后来看到手机平板必须要使用dav_ext_methods模块才能正常访问。

为什么手机/平板客户端特别需要它?

手机和平板上的 WebDAV 客户端 App(如 Solid ExplorerCX File ExplorerDocuments by Readdle 等)通常被设计为功能全面的“文件管理器”。它们不仅仅满足于上传下载单个文件,更需要:

  1. 浏览和管理整个目录结构:这完全依赖 PROPFIND 来获取文件列表和属性。

  2. 自动发现服务器能力:通过 OPTIONS 请求来确保服务器兼容。

  3. 提供良好的用户体验:显示文件图标、大小、修改日期等信息,这些都来自 PROPFIND 的响应。

如果没有 dav_ext_methods 指令来启用这些扩展方法,会发生什么?

  • 客户端无法列出目录内容(显示为空)。

  • 客户端可能会报错,提示“服务器不支持 WebDAV”或“连接失败”。

  • 你只能通过已知的完整文件路径进行单个文件的上传(PUT)或下载(GET),完全失去了“网盘”的便利性。

步骤

1.安装dav_ext_methods模块

dav_ext_methods模块本身是不包含在Nginx中的,需要额外安装,通过下面命令:

apt install libnginx-mod-http-dav-ext  #直接使用apt,网上很多源码编译的太麻烦,而且感觉太过时,不确定行不行

2.添加dav_ext_methods模块

/etc/nginx/nginx.conf前端添加:

load_module modules/ngx_http_dav_ext_module.so;

3.创建webdav密码

sudo openssl passwd -6 <你的密码>

得到以 $6$ 开头的密码字符串。

4.创建密码文件

echo "<你的用户名>:<生成的密码字符串>" | sudo tee -a /etc/nginx/webdav.htpasswd

5.配置webdav网站

site-enable 目录添加网站配置:

# /etc/nginx/site-enable/wedav.conf
server {

    listen 80;
    listen [::]:80;

    server_name _;

    location / {
        root /path/to/your/folder;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
        dav_access group:rw all:r;
        autoindex on;
        auth_basic "WebDAV";
        auth_basic_user_file /etc/nginx/webdav.htpasswd;
        client_max_body_size 0;
        create_full_put_path on;
    }

}

最后重启Nginx: systemctl restart nginx

最后

亲测没问题。

虽然安装那些支持WebDav的第三方应用也是可以的,但是服务器还是尽量避免臃肿以及后期便于维护才是根本。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部
0
希望看到您的想法,请您发表评论x