Droppy教程 | 轻量文件共享

文件共享成为了日常工作的重要组成部分。特别是对于那些需要快速、高效分享大文件的人来说,拥有一个简单可靠,且易于管理的平台至关重要。

项目地址:https://github.com/droppyjs/droppy

一、测试环境

bash 复制代码
uname -i
# x86_64
docker -v
# Docker version 24.0.2, build cb74dfc
docker-compose -v
# Docker Compose version v2.22.0

二、Docker配置Droppy

bash 复制代码
version: '3'
services:
  droppy:
    container_name: droppy-fileserver
    image: silverwind/droppy
    ports:
      - "8989:8989"
    volumes:
      - ./files:/files
      - ./config:/config
    restart: unless-stopped

在这个配置中,文件将存储在当前目录下的 files 文件夹中,配置信息则保存在 config 文件夹中。

文件说明:

  • files 文件夹:存储文件,所有用户共享这一文件夹
  • config/db.json:存储 Droppy 的配置信息,包括用户信息、权限等
  • config/config.json:存储服务启动的配置信息,包括端口、访问限制等

三、Nginx 配置

bash 复制代码
server {
    listen 80;
    server_name fileshare.local.codejerry.cn;
    # return 301 https://$host$request_uri;
    location / {
      proxy_pass http://127.0.0.1:8989;
      proxy_set_header Host $host;
      proxy_set_header Upgrade $http_upgrade; # required for ws!
      proxy_set_header Connection $http_connection;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Real-Port $remote_port;
      proxy_http_version 1.1;
      proxy_cache off;
      proxy_buffering off;
      proxy_redirect off;
      proxy_request_buffering off;
      proxy_ignore_client_abort on;
      proxy_connect_timeout 7200;
      proxy_read_timeout 7200;
      proxy_send_timeout 7200;
      client_max_body_size 0;
   }
}

server {
    listen 443 ssl;
    server_name fileshare.local.codejerry.cn;
    ssl_certificate /etc/letsencrypt/live/local.codejerry.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/local.codejerry.cn/privkey.pem;
    location / {
      proxy_pass http://127.0.0.1:8989;
      proxy_set_header Host $host;
      proxy_set_header Upgrade $http_upgrade; # required for ws!
      proxy_set_header Connection $http_connection;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Real-Port $remote_port;
      proxy_http_version 1.1;
      proxy_cache off;
      proxy_buffering off;
      proxy_redirect off;
      proxy_request_buffering off;
      proxy_ignore_client_abort on;
      proxy_connect_timeout 7200;
      proxy_read_timeout 7200;
      proxy_send_timeout 7200;
      client_max_body_size 0;
   }
}

参数说明:

请求头设置:

  • proxy_set_header Host $host;:将请求头中的 Host 字段设置为客户端请求的 Host
  • proxy_set_header Upgrade $http_upgrade;:这个指令对于 WebSocket 支持是必须的。如果 Droppy 使用了 WebSocket,这将确保升级请求被正确传递
  • proxy_set_header Connection $http_connection;:传递正确的 Connection 头,这对于一些特殊协议(如 WebSocket)的连接是必需的
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:将用户的真实 IP 地址传递给 Droppy,这在日志和一些网络策略中非常有用
  • proxy_set_header X-Forwarded-Proto $scheme;:传递原始请求的协议(如 http 或 https)
  • proxy_set_header X-Real-IP remote_addr; 和 proxy_set_header X-Real-Port remote_port;:分别传递用户的 IP 地址和端口

其他设置:

  • proxy_http_version 1.1;:设置 HTTP 协议版本为 1.1
  • proxy_cache off;、proxy_buffering off;、proxy_request_buffering off;:这些指令禁用了代理层面的缓存和缓冲,有助于减少内存使用,并允许大文件流式传输
  • proxy_redirect off;:禁用代理重定向,避免修改后端服务器的重定向
  • proxy_ignore_client_abort on;:即使客户端中断连接,也会继续向后端 Droppy 服务器发送请求
  • proxy_connect_timeout 7200;、proxy_read_timeout 7200;、proxy_send_timeout 7200;:设置连接、读取和发送超时时间,这里设置为 7200 秒,以便支持长时间连接
  • client_max_body_size 0;:这里设置为 0,表示取消上传文件大小的限制

ssl证书的获取可以参考 Lets-Encrypt配置泛域名证书

四、使用

浏览器输入fileshare.local.codejerry.cn访问droppy。首次访问,输入用户名和密码即可,默认为管理员账号。登录后可以新增用户,新用户给普通权限就行,新用户就可以通过这个账号和密码传文件了。

相关推荐
xujiangyan_2 小时前
nginx的反向代理和负载均衡
服务器·网络·nginx
viqecel16 小时前
网站改版html页面 NGINX 借用伪静态和PHP脚本 实现301重定向跳转
nginx·php·nginx重定向·301重定向·html页面重定向
硪就是硪19 小时前
内网环境将nginx的http改完https访问
nginx·http·https
ak啊21 小时前
Nginx 安全加固详细配置指南
nginx
沐土Arvin1 天前
Nginx 核心配置详解与性能优化最佳实践
运维·开发语言·前端·nginx·性能优化
haoranyyy2 天前
mac环境中Nginx安装使用 反向代理
linux·服务器·nginx
ak啊2 天前
Nginx 高级缓存配置与优化
nginx
再学一丢丢2 天前
Keepalived+LVS+nginx高可用架构
nginx·架构·lvs
xujiangyan_2 天前
nginx的自动跳转https
服务器·nginx·https
tingting01193 天前
k8s 1.30 安装ingress-nginx
nginx·容器·kubernetes