生产环境部署

生产环境部署

生产环境部署建议使用 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: true

OIDC Issuer 配置

OIDC issuer 是身份提供商的标识符,必须与用户实际访问的外部 URL 完全一致

oidc:
  # 正确:使用外部访问地址
  issuer: "https://auth.example.com"
  
  # 错误:使用内部地址(会导致 Token 验证失败)
  # issuer: "http://localhost:8080"

系统会优先使用 X-Forwarded-ProtoX-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
  • 日志:定期归档或接入日志系统