生产环境部署
生产环境部署需要关注安全性、性能和可维护性。以下是关键配置建议。
安全配置
- ✅ 修改
JWT_SECRET为强随机字符串(建议 32 位以上) - ✅ 修改
ADMIN_PASSWORD为复杂密码 - ✅ MySQL 密码使用强密码(至少 12 位,包含大小写字母、数字和特殊字符)
- ✅ 使用 HTTPS 反向代理(Nginx / Caddy)
- ✅ 限制数据库端口仅允许内网访问
- ✅ 设置
CONFIG_KEY为自定义加密密钥
反向代理示例(Nginx)
如需在宿主机统一管理 HTTPS,可参考以下配置:
server {
listen 443 ssl;
server_name redirect.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
} 数据持久化
使用宿主机目录挂载,数据直接存储在 ./data/ 目录下:
volumes:
# MySQL 数据
- ./data/mysql:/var/lib/mysql
# 应用数据(日志、配置等)
- ./data/app:/app/data 日志管理
Redirect 使用 zap 结构化日志,同时输出到控制台和文件:
- 控制台:可读格式,默认
INFO级别 - 文件:JSON 格式,默认
DEBUG级别,自动轮转
# 查看后端容器控制台日志
docker logs -f redirect-backend
# 查看日志文件
docker exec redirect-backend cat /app/data/logs/app.log 调试时可设置LOG_CONSOLE_LEVEL=debug在控制台输出 DEBUG 日志;生产环境可设置LOG_FILE_LEVEL=info减少文件体积。
加密配置文件机制
首次成功连接数据库后,程序会自动将数据库连接参数加密保存到 data/db.conf 文件中。
工作流程
- 启动时检测
data/db.conf是否存在 - 存在则解密并尝试验证连接
- 连接失败则回退到环境变量配置
- 环境变量连接成功后自动生成/更新加密配置文件
加密私钥
- 通过
CONFIG_KEY环境变量指定自定义私钥 - 未设置时使用程序内置默认密钥
- 加密算法:AES-256-GCM + SHA-256 密钥派生
生产环境建议设置CONFIG_KEY为自定义强密钥,并持久化挂载/app/data目录。