一、为什么选择Nginx做WebDAV服务器?

如果你需要在团队内共享文件,或者想搭建一个私人云存储,WebDAV是个不错的选择。它基于HTTP协议,兼容性好,几乎所有操作系统都支持。而Nginx作为高性能的Web服务器,加上简单的模块扩展,就能变身成WebDAV服务器,比专门搭建FTP或Nextcloud更轻量。

优点

  • 配置简单,维护成本低
  • 性能高,适合中小规模文件共享
  • 支持HTTPS,安全性有保障

缺点

  • 原生功能较基础(比如没有版本控制)
  • 权限管理不如专业网盘灵活

二、准备工作

在开始之前,确保你的环境满足以下条件:

  1. Linux服务器(本文以Ubuntu 20.04为例)
  2. Nginx已安装(建议版本1.18+)
  3. 基本命令行操作能力

安装Nginx和WebDAV模块:

# 更新软件包列表
sudo apt update
# 安装Nginx和WebDAV依赖模块
sudo apt install nginx libnginx-mod-http-dav-ext

三、配置Nginx支持WebDAV

1. 基础配置

打开Nginx配置文件(通常位于/etc/nginx/sites-available/default),添加以下内容:

# 技术栈:Nginx + WebDAV模块
server {
    listen 80;
    server_name your_domain.com;  # 替换为你的域名或IP

    # WebDAV根目录
    root /var/webdav/files;
    autoindex on;  # 允许目录列表

    # WebDAV核心配置
    dav_methods PUT DELETE MKCOL COPY MOVE;
    dav_ext_methods PROPFIND OPTIONS;
    dav_access user:rw group:rw all:r;  # 权限控制

    # 禁止访问隐藏文件
    location ~ /\. {
        deny all;
    }
}

关键参数说明

  • dav_methods:允许的WebDAV操作(如上传、删除)
  • dav_ext_methods:支持扩展方法(如目录列表查询)
  • dav_access:文件权限规则

2. 创建文件目录并设置权限

sudo mkdir -p /var/webdav/files
sudo chown -R www-data:www-data /var/webdav/files  # Nginx默认用户
sudo chmod 775 /var/webdav/files

3. 重启Nginx生效

sudo systemctl restart nginx

四、添加用户认证

为了防止陌生人访问,建议启用密码认证。

1. 生成密码文件

# 安装htpasswd工具
sudo apt install apache2-utils
# 创建用户密码(示例用户:admin)
sudo htpasswd -c /etc/nginx/webdav_passwd admin

2. 修改Nginx配置

在之前的配置中添加:

location / {
    auth_basic "WebDAV Login";
    auth_basic_user_file /etc/nginx/webdav_passwd;
}

五、启用HTTPS加密

使用Let's Encrypt免费证书:

# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 申请证书(需提前解析域名)
sudo certbot --nginx -d your_domain.com

Certbot会自动修改Nginx配置,强制跳转HTTPS。


六、客户端连接测试

1. Windows用户

  1. 打开“此电脑” → 右键“映射网络驱动器”
  2. 输入地址:\\your_domain.com@SSL\webdav
  3. 输入用户名密码即可

2. macOS/Linux用户

# 安装davfs2
sudo apt install davfs2
# 挂载WebDAV
sudo mount -t davfs https://your_domain.com /mnt/webdav

七、高级功能扩展

1. 限制文件类型

禁止上传可执行文件:

location / {
    if ($request_filename ~* \.(exe|sh|php)$) {
        return 403;
    }
}

2. 日志记录

记录文件操作:

log_format webdav '$remote_user [$time_local] "$request" $status $body_bytes_sent';
access_log /var/log/nginx/webdav.log webdav;

八、应用场景与注意事项

适用场景:

  • 小团队共享设计稿、文档
  • 个人备份手机相册
  • 跨平台文件同步(如Windows/macOS/Linux互传)

注意事项:

  1. 定期备份:WebDAV没有版本控制,误删文件难恢复
  2. 监控空间:大文件可能快速占满磁盘
  3. 防火墙设置:开放80/443端口

九、总结

用Nginx搭建WebDAV服务器,就像给团队造了一个“共享U盘”。它轻量、速度快,适合对功能要求不高的场景。如果你需要更复杂的权限管理或协作功能,可以考虑Nextcloud,但对于“简单粗暴”的文件共享需求,这个方案足够用了。