WebDAV(Web-based Distributed Authoring and Versioning)是一种允许用户通过 HTTP 协议进行文件管理的协议。通过 WebDAV,用户可以上传、下载、修改文件等操作。本文将介绍如何使用 Docker 部署 WebDAV 服务,并通过 Nginx 实现 HTTPS 反向代理。
GitHub 地址: https://github.com/hacdias/webdav?tab=readme-ov-file
1. 使用 Docker 部署 WebDAV 服务
首先,我们使用 Docker 来部署 WebDAV 服务。WebDAV 的 Docker 镜像非常容易使用,只需简单的 Docker 配置文件即可完成部署。
1.1 创建 docker-compose.yml
在你的项目目录下,创建一个 docker-compose.yml 文件。以下是我使用的配置:
services:
  webdav:
    image: hacdias/webdav
    container_name: webdav
    restart: always
    ports:
      - 8092:8080
    volumes:
      - ./data:/data
      - ./config.yml:/config.yml
- image: hacdias/webdav:使用- hacdias/webdav镜像来启动 WebDAV 服务。
- container_name: webdav:指定容器名称。
- ports: 8092:8080:将容器的 8080 端口映射到宿主机的 8092 端口。
- volumes:将宿主机的文件夹挂载到容器内。我们将- ./data目录挂载为 WebDAV 文件的存储目录,- ./config.yml挂载为配置文件。
1.2 配置 config.yml
WebDAV 服务的配置文件是 config.yml,其中可以设置监听的端口、认证方式、跨域设置以及用户权限等。以下是我配置的 config.yml 内容:
address: 0.0.0.0
port: 8080
auth: true
prefix: /
modify: true
rules: []
 
cors:
  enabled: true
  credentials: true
  allowed_headers:
    - Depth
  allowed_hosts:
    - http://localhost:8080
  allowed_methods:
    - GET
  exposed_headers:
    - Content-Length
    - Content-Range
 
users:
  - username: admin
    password: "{bcrypt}$2a$10$<hashed-password>"
    directory: /data
    permissions: CRUD
    rules:
      - path: /data
        permissions: CRUD
- auth: true:启用身份验证。
- users:配置了一个- admin用户,并为其设置了密码,并授权访问- /data目录,具有 CRUD 权限。
1.3 启动 Docker 容器
使用以下命令启动 WebDAV 服务:
docker-compose up -d此时,WebDAV 服务已启动并运行在 http://localhost:8092 上。
2. 配置 Nginx 反向代理
在 Nginx 配置文件中,添加以下内容:
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name webdav.1024.do;
 
    # ssl相关配置
    ssl_certificate /usr/local/nginx/cert/1024.do.pem;
    ssl_certificate_key /usr/local/nginx/cert/1024.do.key;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;
 
    location / {
        proxy_pass http://localhost:8092;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
 
    # 默认拒绝所有非指定域名的请求
    if ($host != "webdav.1024.do") {
        return 403;
    }
}
 
server {
    listen 80;
    listen [::]:80;
    server_name webdav.1024.do;
    rewrite ^/(.*) https://$host$request_uri permanent;
}
- ssl_certificate和- ssl_certificate_key:指定你的 SSL 证书路径。
- proxy_pass:将请求转发到本地的 WebDAV 服务(即- localhost:8092)。
- proxy_set_header:设置请求头信息,确保客户端的 IP 地址等信息能够正确传递。
- if ($host != "webdav.1024.do"):默认拒绝所有非- webdav.1024.do的请求,增强安全性。
- 80 端口的配置会将所有 HTTP 请求自动重定向到 HTTPS
2.2 重启 Nginx
完成配置后,重启 Nginx 服务以使修改生效:
systemctl restart nginx或者
nginx -s reload3. 测试和访问
此时,WebDAV 服务已成功通过 Nginx 反向代理并启用了 HTTPS。你可以在浏览器中访问 https://webdav.1024.do 来测试是否能够正常访问 WebDAV 服务。
总结:
通过 Docker 和 Nginx,我们成功地部署了一个安全的 WebDAV 服务。通过 Docker 容器化部署,可以方便地管理 WebDAV 服务,Nginx 反向代理则提供了安全的 HTTPS 访问。在实际使用中,你可以根据需要进一步调整用户权限和 WebDAV 配置,确保服务的安全和高效运行。

非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://spacex.run/archives/104
 
  	 
  
										 
										 
										 
										
https://t.me/bs_1xbet/12
https://t.me/s/bs_1xbet/20
https://t.me/s/bs_1xbet/9
https://t.me/s/bs_1xbet/35
https://t.me/bs_1xbet/22
https://t.me/bs_1xbet/31
https://t.me/s/bs_1xbet/23
https://t.me/s/bs_1xbet/9
https://t.me/bs_1xbet/21
https://t.me/bs_1xbet/49
https://t.me/bs_1xbet/17
https://t.me/s/bs_1xbet/17
https://t.me/s/bs_1xbet/8
https://t.me/s/bs_1xbet/35
https://t.me/s/bs_1xbet/8
https://t.me/bs_1xbet/33
https://t.me/s/bs_1xbet/46
https://t.me/s/bs_1xbet/46
https://t.me/s/bs_1xbet/38
https://t.me/s/bs_1xbet/40
https://t.me/s/bs_1xbet/27
https://t.me/bs_1xbet/5
https://t.me/bs_1xbet/9
https://t.me/s/bs_1xbet/16
https://t.me/bs_1xbet/8
https://t.me/bs_1xbet/32
https://t.me/s/bs_1xbet/33
https://t.me/bs_1xbet/20
https://t.me/s/bs_1xbet/13
https://t.me/s/bs_1xbet/21