✅ 全面支持 HTTPS · 大文件强制下载 · 密码保护 · 邮件通知 · 分享管理
response-content-disposition=attachment)Nginx 前端 :5173 使用 HTTPS,后端 :3000 也使用 HTTPS,但 MinIO 代理地址 :9002 为 HTTPS。通过统一环境变量 FRONTEND_URL=https://www.fox360.cn:5173 及后端强制生成 https 预签名 URL,解决混合内容报错。
根源:bandwidth_used 字段累加时出现字符串拼接,导致超出 bigint 范围。解决方案:在 recordDownload 和实体 recordDownload 方法中强制使用数值运算,并添加 try/catch 保证下载流程不受影响。
后端统一使用 ForbiddenException 携带 code 字段 (PASSWORD_REQUIRED, INVALID_PASSWORD, PASSWORD_LOCKED),前端根据 errorCode 显示对应密码框或错误提示。同时引入临时标记 __passwordVerified 避免重复验证。
修复:在 share.service 调用邮件服务时,必须传递 shareCode;email.service 中从环境变量 FRONTEND_URL 读取前端地址拼接 /s/${shareCode}。同时清理 .env 中重复/错误的 FRONTEND_URL 配置。
通过 forwardRef 处理 ShareModule 与 UserModule 的相互依赖,并确保 UserService 正确导出,解决 UnknownDependenciesException。
客户端 (HTTPS) → Nginx (端口 5173/3000/9002)
↓
├─ 前端静态资源 (5173) → React 应用
├─ 后端 API (3000) → NestJS 服务 (连接 PostgreSQL, Redis)
└─ MinIO 代理 (9002) → MinIO 集群 (8节点, 纠删码)
所有对外服务均通过 Nginx 代理并启用 SSL,内部服务使用 HTTP 通信。
.env – 后端环境变量 (数据库、Redis、MinIO、邮件、JWT)nginx.conf – 反向代理、SSL、负载均衡、客户端限流docker-compose.yml – 8节点 MinIO 集群 + Nginx 容器编排share.entity.ts – 分享实体(包含密码哈希、访问控制、统计字段)share.service.ts – 核心业务逻辑(创建、访问、下载、邮件)www.fox360.cn 指向服务器)5173(前端), 3000(后端), 9002(MinIO代理)uid=1000)npm run build,并将产物部署到 Nginx 静态目录或单独托管感谢整个开发过程中严谨的调试与优化,最终交付了一个稳定、安全、用户体验优秀的分享系统。特别鸣谢所有参与测试的小伙伴们~