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 reload
3. 测试和访问
此时,WebDAV 服务已成功通过 Nginx 反向代理并启用了 HTTPS。你可以在浏览器中访问 https://webdav.1024.do 来测试是否能够正常访问 WebDAV 服务。
总结:
通过 Docker 和 Nginx,我们成功地部署了一个安全的 WebDAV 服务。通过 Docker 容器化部署,可以方便地管理 WebDAV 服务,Nginx 反向代理则提供了安全的 HTTPS 访问。在实际使用中,你可以根据需要进一步调整用户权限和 WebDAV 配置,确保服务的安全和高效运行。

非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://spacex.run/archives/104
共有 0 条评论