生产环境部署
生产环境部署
生产环境部署建议使用 MySQL/PostgreSQL + Redis,并配置 HTTPS。
安全清单
部署前请确认以下事项:
- 修改默认管理员密码(安装向导设置的密码)
- 设置强 JWT Secret(32 字符以上随机字符串)
- 配置 HTTPS(OIDC 规范要求生产环境使用 HTTPS)
- 将
server.mode设为release - 数据库使用 MySQL 或 PostgreSQL(不使用 SQLite)
- Redis 设置密码
- 配置防火墙,仅暴露必要端口
数据库选型
| 数据库 | 推荐场景 | 注意事项 |
|---|---|---|
| MySQL 8.0+ | 大多数生产环境 | 推荐 utf8mb4 字符集 |
| PostgreSQL 13+ | 需要高级 SQL 特性 | 建议 sslmode=require |
| SQLite | 仅用于开发/测试 | 不支持并发写入,不推荐生产使用 |
配置示例(生产环境)
app:
installed: true
server:
mode: release
addr: ":8080"
database:
driver: mysql
host: db.internal
port: 3306
username: mliev_iam
password: "强密码"
database: mliev_iam
charset: utf8mb4
max_idle_conns: 10
max_open_conns: 100
conn_max_lifetime: 3600
redis:
host: redis.internal
port: 6379
password: "Redis密码"
pool_size: 20
min_idle_conns: 10
cache:
driver: redis
jwt:
secret: "至少32字符的随机字符串"
expire_hours: 24
oidc:
issuer: "https://auth.example.com"
log:
level: info
filename: logs/app.log
max_size: 100
max_age: 30
max_backups: 10
compress: trueOIDC Issuer 配置
OIDC issuer 是身份提供商的标识符,必须与用户实际访问的外部 URL 完全一致。
oidc:
# 正确:使用外部访问地址
issuer: "https://auth.example.com"
# 错误:使用内部地址(会导致 Token 验证失败)
# issuer: "http://localhost:8080"系统会优先使用 X-Forwarded-Proto 和 X-Forwarded-Host 请求头,如果没有这些头部则使用此配置项。
签名密钥管理
每个 OIDC 应用在创建时会自动生成独立的 RSA 签名密钥(默认 RS256, 2048 位),密钥存储在数据库中。无需手动配置密钥文件,支持:
- 多种签名算法(RS256, RS512, HS256)
- 自动密钥轮转
- 每个应用独立密钥
监控
健康检查端点
| 端点 | 说明 |
|---|---|
GET /health |
完整健康检查(含数据库和 Redis 状态) |
GET /health/simple |
简单健康检查(仅返回状态和时间戳) |
日志管理
日志支持自动轮转:
log:
level: info # 日志级别
filename: logs/app.log # 日志文件路径
max_size: 100 # 单文件最大 MB
max_age: 30 # 保留天数
max_backups: 10 # 保留文件数
compress: true # 压缩历史日志备份建议
- 数据库:定期全量备份 + binlog 增量备份
- 配置文件:版本控制管理
config.yaml - 日志:定期归档或接入日志系统