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。首次访问,输入用户名和密码即可,默认为管理员账号。登录后可以新增用户,新用户给普通权限就行,新用户就可以通过这个账号和密码传文件了。

相关推荐
如来神掌十八式2 小时前
nginx + spring gateway+spring 服务_nginx 转发到 gateway
nginx·spring·gateway
hotlinhao3 小时前
Nginx rewrite last 与 redirect 的区别——Vue history 模式短链接踩坑记录
前端·vue.js·nginx
tryCbest1 天前
Nginx常用操作命令-Linux和Windows系统
linux·windows·nginx
難釋懷1 天前
Nginx实现本地缓存查询
nginx·spring·缓存
ZzzZZzzzZZZzzzz…2 天前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
robch2 天前
python3 -m http.server 8001直接启动web服务类似 nginx
前端·nginx·http
cyber_两只龙宝2 天前
【Nginx】Nginx实现FastCGI详解
linux·运维·nginx·云原生·php·memcached·fastcgi
BullSmall2 天前
Prometheus 可以监控docker 部署的Nginx 吗?
nginx·docker·prometheus
魔卡少女12 天前
Nginx配置代码化自动部署詹金斯/Github方案
前端·nginx·github
倔强的胖蚂蚁2 天前
AI 人工智能配置管理 Nginx
运维·nginx·云原生