WebDAV

2024 年 10 月 21 日 星期一(已编辑)
1
这篇文章上次修改于 2024 年 10 月 21 日 星期一,可能部分内容已经不适用,如有疑问可询问作者。

WebDAV

WebDAV

WebDAV 扩展自 HTTP 协议,可以在远程 web 服务器上管理文件

作为一种标准的协议,许多 App 支持通过 WebDAV 备份或管理数据

也正由于这是一种标准的协议,使用网盘无需通过对应的客户端,国内许多主要的网盘都不提供 WebDAV,如百度网盘;有提供 WebDAV 的如坚果云

而无论如何,数据最终还是存储在对应的服务商手里,因此我今天在自己的服务器上搭建 WebDAV 服务,用于一些重要数据的存储

安装

  1. 安装 Nginx

    如果还没有安装 Nginx,使用以下命令进行安装:

    sudo apt update
    sudo apt install nginx
  2. 安装 nginx-dav-ext-module

    Nginx 的标准安装不包含 WebDAV 模块,因此需要安装 nginx-dav-ext-module

    sudo apt install libnginx-mod-http-dav-ext
  3. 配置 WebDAV

    创建一个新的配置文件:

    sudo nano /etc/nginx/sites-available/<webdav.domain.com>

    添加以下配置:

    server {
        listen 80;
        server_name <webdav.domain.com>;
    
        location /webdav/ {
            root /var/www/webdav;  # WebDAV 文件存放目录
            dav_methods PUT DELETE MKCOL COPY MOVE;
            dav_ext_methods OPTIONS PROPFIND;
            create_full_put_path on;
            dav_access user:rw group:rw all:r;
            auth_basic "Restricted";
            auth_basic_user_file /etc/nginx/.htpasswd;  # 基本认证文件
            client_max_body_size 100M;    # 单个文件大小限制,根据需求调整
            autoindex on;
        }
    }
  4. 创建 WebDAV 文件目录

    创建 WebDAV 文件存放目录并设置权限:

    sudo mkdir -p /var/www/webdav
    sudo chown -R www-data:www-data /var/www/webdav
    sudo chmod -R 755 /var/www/webdav
  5. 设置基本认证

    为了保护 WebDAV,建议使用基本认证

    首先安装 apache2-utils,以便使用 htpasswd 工具:

    sudo apt install apache2-utils
    然后创建一个用户和密码文件:
    sudo htpasswd -c /etc/nginx/.htpasswd <username>
    根据提示输入密码
  6. 启用站点配置

    将新配置文件链接到 sites-enabled 目录:

    sudo ln -s /etc/nginx/sites-available/<webdav.domain.com> /etc/nginx/sites-enabled/
  7. 测试 Nginx 配置

    在重新加载 Nginx 之前,先测试配置文件是否正确:

    sudo nginx -t
  8. 重启 Nginx

    如果配置测试没有错误,可以重启 Nginx 以应用更改:

    sudo systemctl restart nginx
    现在,可以通过 `http://<webdav.domain.com

    /webdav/` 访问 WebDAV 中的文件

    在连接时会要求输入用户名和密码

  9. (可选,建议)启用 HTTPS

    使用 Let’s Encrypt 为站点获取 SSL 证书

    1. 安装 Certbot

      sudo apt install certbot python3-certbot-nginx
    2. 获取 SSL 证书

      使用以下命令来获取证书:

      sudo certbot --nginx -d <webdav.domain.com>

      按照提示完成 SSL 证书的获取

      1. 配置 WebDAV

        编辑或创建 WebDAV 的 Nginx 配置文件 /etc/nginx/sites-available/<webdav.domain.com>

        sudo nano /etc/nginx/sites-available/<webdav.domain.com>

        正常情况下,配置文件将会调整为以下内容:

        server {
           listen 80;
           server_name <webdav.domain.com>;
        
           # 强制将 HTTP 请求重定向到 HTTPS
           return 301 https://$host$request_uri;
        }
        
        server {
           listen 443 ssl;
           server_name <webdav.domain.com>;
        
           ssl_certificate /etc/letsencrypt/live/<webdav.domain.com>/fullchain.pem;
           ssl_certificate_key /etc/letsencrypt/live/<webdav.domain.com>/privkey.pem;
        
           location /webdav/ {
               root /var/www/webdav;  # WebDAV 文件存放目录
               dav_methods PUT DELETE MKCOL COPY MOVE;
               dav_ext_methods OPTIONS PROPFIND;
               create_full_put_path on;
               dav_access user:rw group:rw all:r;
               auth_basic "Restricted";
               auth_basic_user_file /etc/nginx/.htpasswd;  # 基本认证文件
               client_max_body_size 100M;    # 单个文件大小限制,根据需求调整
               autoindex on;
           }
        }

        ⚠️ 注意

        如果 WebDAV 目录是空的,也有可能返回 403 Forbidden

        确保在 WebDAV 目录中有一些可访问的文件或子目录

  1. 应用 WebDAV

    在支持 WebDAV 的 App 里,如 Zotero,填入 WebDAV 信息即可

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...