首页 > 系统相关 >使用 Nginx 搭建 Webdav 服务

使用 Nginx 搭建 Webdav 服务

时间:2024-09-21 14:34:55浏览次数:7  
标签:webdav ssl 证书 Nginx dav key path 搭建 Webdav

使用 Nginx 搭建 Webdav 服务

一、 自签名根证书

1. 生成根证书密钥

openssl genrsa -out ./root.key 2048

2. 生成根证书

openssl req -x509 -new -key ./root.key -out ./root.pem -days 365

交互信息
Country Name (2 letter code) []:CN
State or Province Name (full name) []:HeNan
Locality Name (eg, city) []:HZG
Organization Name (eg, company) []:www.hzg.com
Organizational Unit Name (eg, section) []:HZG
Common Name (eg, fully qualified host name) []:HZG
Email Address []:[email protected]

二、生成应用证书

1. 生成应用证书密钥

openssl genrsa -out webdav.key 2048

2. 生成应用证书请求

openssl req -new -key webdav.key -out webdav.csr

3. 创建证书附加用途文件

基于域名的证书
这里解决的问题是浏览器访问网页验证证书域名的问题,保存为 webdav.ext 文件,生成证书的时候使用

基于域名的证书
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName

[ SubjectAlternativeName ]
DNS.1=hzgwebdav.com
DNS.2=*.hzgwebdav.com
基于IP的证书
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName

[ SubjectAlternativeName ]
IP.1=192.168.0.1
IP.2=192.168.0.2

4. 签发证书

openssl x509 -req -in webdav.csr -CA root.pem -CAkey root.key -CAcreateserial -out webdav.crt -days 365 -sha256 -extfile webdav.ext

三、Nginx 部署 Webdav 服务

1. 生成 Webdav 用户密码文件

echo hzg:$(openssl passwd -crypt 12345678)>/path/certs/webdav/webdavpasswd

2. Nginx WebDav 配置

注意 Nginx 需要安装以下模块

nginx-dav-ext-module
ngx_http_headers_module
dav_ext_lock_zone zone=davlock:10m;
# Http 配置
server {
    listen 8080;
    server_name hzgwebdav.com *.hzgwebdav.com;

    location / {
        root /path/webdav;
        autoindex_localtime on;

        set $dest $http_destination;
        if (-d $request_filename) {                   # 对目录请求、对URI自动添加"/"
            rewrite ^(.*[^/])$ $1/;
            set $dest $dest/;
        }

        if ($request_method ~ (MOVE|COPY)) { # 对MOVE|COPY方法强制添加Destination请求头
           more_set_input_headers 'Destination: $dest';
        }

        if ($request_method ~ MKCOL) {
            rewrite ^(.*[^/])$ $1/ break;
        }

        client_body_temp_path /tmp;

        dav_methods PUT DELETE MKCOL COPY MOVE;       # DAV支持的请求方法
        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # DAV扩展支持的请求方法
        dav_ext_lock zone=davlock;                    # DAV扩展锁绑定的内存区域
        create_full_put_path  on;                     # 启用创建目录支持
        dav_access user:rw group:r all:r;             # 设置创建的文件及目录的访问权限

        auth_basic "Authorized Users WebDAV";
        auth_basic_user_file /path/certs/webdav/webdavpasswd;
    }
}

# Https 配置
server {
    listen 443 ssl;
    server_name hzgwebdav.com *.hzgwebdav.com;

    autoindex on;

    ssl_certificate "/path/certs/webdav/webdav.crt";
    ssl_certificate_key "/path/certs/webdav/webdav.key";

    ssl_protocols           SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ;
    ssl_prefer_server_ciphers on;
    ssl_ciphers               ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_session_cache         shared:SSL:10m;
    ssl_session_tickets       off;
    ssl_stapling              off;

    location / {
        root /path/webdav;
        autoindex_localtime on;

        set $dest $http_destination;
        if (-d $request_filename) {                   # 对目录请求、对URI自动添加"/"
            rewrite ^(.*[^/])$ $1/;
            set $dest $dest/;
        }

        if ($request_method ~ (MOVE|COPY)) { # 对MOVE|COPY方法强制添加Destination请求头
           more_set_input_headers 'Destination: $dest';
        }

        if ($request_method ~ MKCOL) {
            rewrite ^(.*[^/])$ $1/ break;
        }

        client_body_temp_path /tmp;

        dav_methods PUT DELETE MKCOL COPY MOVE;       # DAV支持的请求方法
        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # DAV扩展支持的请求方法
        dav_ext_lock zone=davlock;                    # DAV扩展锁绑定的内存区域
        create_full_put_path  on;                     # 启用创建目录支持
        dav_access user:rw group:r all:r;             # 设置创建的文件及目录的访问权限

        auth_basic "Authorized Users WebDAV";
        auth_basic_user_file /path/certs/webdav/webdavpasswd;
    }
}

标签:webdav,ssl,证书,Nginx,dav,key,path,搭建,Webdav
From: https://www.cnblogs.com/huangzhengguo/p/18423990

相关文章

  • 如何利用帝国CMS搭建多个网站?
    使用帝国CMS搭建多个网站可以通过几种不同的方法实现,主要取决于你想要实现的具体效果。以下是几种常见的方法:方法一:使用多站点功能帝国CMS支持在同一套系统中管理多个站点,即所谓的“多站点发布”。这种方法适合于需要统一管理和维护多个相关网站的情况。步骤:安装帝国CMS:首先......
  • Nginx配置详解
    #nginx进程数,建议设置为等于CPU总核心数。worker_processes1;#事件区块开始events{#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连......
  • 【产品经理修炼之道】- 怎么搭建OA系统:审批流程
    在OA系统中,大部分功能都会有审批流程。会围绕“人、事、物、财”产生变更。本文作者总结了审批流程的处理和经验,供大家参考。一、为什么要有审批流程企业系统管理中大部分的功能模块都会和审批流关联,一个便捷高效的审批流管理方案,能极大减少沟通协同的成本,提高企业内协作的......
  • 2025届必看:Java SpringBoot搭建大学生资助管理系统,详解功能模块,实现学生信息高效管理!
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡文末......
  • 大学C++程序设计课程开发指南——开发环境搭建
    前言由于某些大学程序设计课程仍然在使用VC6.0这一上古工具,不太适合学生与现代开发生产接轨,并且也有可能出现兼容问题等,故编写此文,仅供参考。使用VisualStudio在介绍VisualStudio(此后简称VS)前,先给大家介绍这一工具的发展。其前身正是VC6.0(全称VisualC++6.0,二十世纪末和......
  • kubeadm搭建K8S容器集群管理系统(一)
    认识各k8s各组件的作用: 1.1Kubernetes概述Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。Kubernetes基于docker容器的云平台,简写成:k8s官方网站:https://kubernetes.io/官方网站非常友好,为......
  • 搭建免费的图床
    当我们想创建一个小型的web应用时,如果图片资源放在服务器上,会影响带宽(也就是加载速度),尤其一些新手创业项目购买的服务器资源非常有限。这个时候如果还把图片资源放在服务器上会导致网页加载的非常缓慢。这个时候就需要用的图片服务器。图片服务器有以下几种自己搭建图片服务器......
  • 本地搭建虚拟机以及配置记录
    1.下载镜像&安装1.1VMware安装略。1.2CentOS安装1)下载CentOShttps://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.0.11444511lXIy8R 2)一路默认,参数自由选择。3)配置网络、日期和时间、硬盘格式化 参数注1:如果设置网络的时候,显......
  • Nginx反向代理出现502 Bad Gateway问题的解决方案
    ......
  • Windows环境下搭建MySQL主从同步实现读写分离
    文章目录前言读写分离的基本原理环境介绍及说明主库my.ini初始配置创建用于同步的数据库和表一、新增mysql从库1.复制mysql文件夹2.修改从库的my.ini3.安装到windows服务二、在my.ini中配置主、从库相关参数1.主库新增配置参数不同版本参数不同问题2.从库新增配置参......