您现在的位置是: 网站首页 >服务部署 服务部署

【nginx、webdav】使用Nginx搭建WebDav文件共享服务

admin2021年9月19日 13:38 Nginx 80人已围观

# 【nginx、webdav】使用Nginx搭建WebDav文件共享服务 ## WebDAV是什么 WebDAV是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。 通俗一点儿来说,WebDAV 就是一种互联网方法,应用此方法可以在服务器上划出一块存储空间,可以使用用户名和密码来控制访问,让用户可以直接存储、下载、编辑文件。 ## Nginx 配置 WebDav ### 安装 Nginx 方式 - 在线安装 ```bash apt install nginx-full -y ``` - 离线安装 ```bash # 参考 http://www.weixueyuan.net/a/738.html ``` ### 配置 Nginx WebDav 脚本 ```bash #!/bin/bash # #Version : Ver1.0 #Author : StarMeow #Contact : starmeow@qq.com #OSEnv : Debian10 #File : .sh #Time : 2021-09-19_12:15:44 #Desc : 【nginx、webdav】使用Nginx搭建WebDav建议共享空间 # apt install nginx-full -y IMAGE_PATH=/home/user/images mkdir -p $IMAGE_PATH # 注意授权,否则webdav客户上无法上传 chown www-data:www-data $IMAGE_PATH touch $IMAGE_PATH/123 tee /etc/nginx/conf.d/images.webdav.conf << EOF server { listen 8008; server_name _; # 浏览器访问中文乱码配置 charset utf-8; access_log /var/log/nginx/webdav.access.log; location /images { alias $IMAGE_PATH; autoindex on; client_max_body_size 5G; client_body_temp_path /tmp; # ngx_http_dav_module 模块支持 dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; # nginx-dav-ext-module 模块支持 dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # 认证权限管理 dav_access user:rw group:r all:r; auth_basic "Authorized Users Only"; auth_basic_user_file /etc/nginx/.htpasswd; } } EOF nginx -t if [ $? -eq 0 ];then systemctl restart nginx echo "已重启Nginx" echo "访问地址 http://192.168.168.200:8008/" fi ``` #### Nginx WebDAV模块配置介绍 Nginx 通过 `ngx_http_dav_module` 模块实现对 WebDAV 协议的支持,使用户通过 WebDAV 模块的配置指令实现文件的管理操作,该模块支持 WebDAV 协议的 PUT、DELETE、MKCOL、COPY 和 MOVE 请求方法,在配置编译参数时,需要添加 `--with-http_dav_module` 参数启用该功能。 `ngx_http_dav_module` 模块的配置指令如下表所示: | 指令名称 | 指令值格式 | 默认值 | 指令说明 | | ---------------------- | --------------------------------------- | --------- | ------------------------------------------------------------------------ | | `create_full_put_path` | on 或 off | `off ` | 启用创建目录支持,默认情况下,Put 方法只能在已存在的目录里创建文件 | | `dav_access` | users:permissions... | `user:rw` | 设置创建的文件及目录的访问权限,如果定义了 group 或 all 权限,user 设置可省略 | | `dav_methods` | off 或 [PUT][DELETE][MKCOL][COPY][MOVE] | `off` | 指定支持的 WebDAV 方法 | | `min_delete_depth` | number | `0` | 允许删除文件及目录的最小层级,小于该层级的文件及目录不允许删除 | 上述指令都可编写在 `http`、`server`、`location` 指令域中。 Nginx 的自有模块对 WebDAV 协议的支持并不完整,可以通过第三方模块 `nginx-dav-ext-module` 增加文件特性查找和对写文件的加锁与解锁支持。`nginx-dav-ext-module` 模块的配置指令如下表所示。 | 指令名称 | 指令值格式 | 默认值 | 指令说明 | | ------------------- | --------------------------------- | ------ | ------------------------------------------------------------ | | `dav_ext_methods` | [PROPFIND][OPTIONS][LOCK][UNLOCK] | \-- | 指定支持的 WebDAV 方法 | | `dav_ext_lock_zone` | zone=NAME:SIZE[timeout=TIMEOUT] | \-- | 定义存储文件锁的共享内存区域及锁超时时间,默认锁超时时间是 1 分钟 | | `dav_ext_lock` | zone=NAME | \-- | 启用 WebDav 的锁操作支持 | 关于上表,有以下几点需要说明。 * `dav_ext_lock_zone` 指令只能编写在 http 指令域中; * `dav_methods` 和 `dav_ext_lock` 指令可编写在 http、server、location 指令域中; WebDAV 协议方法及方法说明如下表所示。 | 方法名称 | 文件权限 | 方法说明 | | ------------ | -------- | ---------------------------------------------------------------- | | OPTIONS | \-- | 支持 WebDAV 的检索服务方法 | | GET | 读 | 获取文件 | | PUT、POST | 写 | 上传文件 | | DELETE | 删除 | 删除文件或集合 | | COPY | 读、写 | 复制文件 | | MOVE | 删除、写 | 移动文件 | | MKCOL | 写 | 创建由一个或多个文件 URI 组成的新集合 | | PROPFIND | 读 | 获取一个或多个文件的特性(创建日期、文件作者等),实现文件的查找与管理 | | LOCK、UNLOCK | 写 | 添加、删除文件锁,实现写操作保护 | 进行 WebDAV 协议的 MOVE/COPY 操作时,会通过 HTTP 请求头属性字段 Destination 指定目标路径,如果客户端请求头中没有字段 Destination,Nginx 会直接报错。为增加服务端兼容性,可以通过第三方模块 `headers-more-nginx-module` 的 `more_set_input_headers` 指令在 MOVE/COPY 操作的 HTTP 请求头中强制添加 Destination 字段。 #### 设置连接 WebDav 的帐密 ```bash # 设置帐密。密码不能超过8位 echo "admin:$(openssl passwd admin_pw)" > /etc/nginx/.htpasswd # 注意对文件授权 chown www-data:www-data /etc/nginx/.htpasswd chmod 600 /etc/nginx/.htpasswd ``` ## WebDav连接测试 在Windows下使用 Cyberduck 工具进行测试。 ![BLOG_20210919_133924_34](/media/blog/images/2021/09/BLOG_20210919_133924_34.png "博客图集BLOG_20210919_133924_34.png") ### WebDav连接工具 - MacOS:推荐FE File Explorer - WinOS:推荐RaiDrive(官网下载地址:https://www.raidrive.com/download) - Cyberduck:https://cyberduck.io/download/ ### 在Win10资源管理器映射WebDAV服务 1. 修改注册表使得WIN同时支持http和https - 定位到 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters` - 把BasicAuthLevel 值改成2,即同时支持http和https,默认只支持https,然后重启服务 1. 在服务里打开WebClient,或通过命令 - `net stop webclient`、`net start webclient` 1. 在Windows资源管理器空白处右键,选添加一个网络位置 1. 填写正确的链接加端口号,在之后的对话框填写用户名密码 2. 完成后,计算机出现一个网络位置

很赞哦! (0)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

  • 建站时间:网站已运行1163天
  • 系统信息:Linux
  • 后台程序:Python: 3.8.10
  • 网站框架:Django: 3.2.6
  • 文章统计:256 篇
  • 文章评论:54 条
  • 腾讯分析网站概况-腾讯分析
  • 百度统计网站概况-百度统计
  • 公众号:微信扫描二维码,关注我们
  • QQ群:QQ加群,下载网站的学习源码
返回
顶部
标题 换行 登录
网站