docs: record portal production session boundary (#11)
@@ -46,7 +46,11 @@ portal → /var/lib/chorus/storage(或后续对象存储适配)
|
||||
| `CHORUS_SESSION_KEY` | portal 会话 | 是 |
|
||||
| `CHORUS_STORAGE_ROOT` | 生成物目录 | 否 |
|
||||
| 上游/存储超时、lease、worker 数 | 执行与优雅退出 | 否 |
|
||||
| 上传和限流阈值 | 数量、大小、MIME、像素、请求频率 | 否 |
|
||||
| `CHORUS_SESSION_TTL_MINUTES` | 服务端内存会话有效期 | 否 |
|
||||
| `CHORUS_LOGIN_ATTEMPTS` / `CHORUS_LOGIN_WINDOW_SECONDS` | 登录节流窗口 | 否 |
|
||||
| `CHORUS_MAX_PROMPT_BYTES` | prompt 字节上限 | 否 |
|
||||
| `CHORUS_MAX_IMAGES` / `CHORUS_MAX_IMAGE_BYTES` / `CHORUS_MAX_UPLOAD_BYTES` / `CHORUS_MAX_IMAGE_PIXELS` | 上传边界 | 否 |
|
||||
| `CHORUS_HISTORY_LIMIT` | 历史查询上限 | 否 |
|
||||
| 保留期与磁盘告警 | 清理和容量保护 | 否 |
|
||||
|
||||
生产启动必须校验必需配置、密钥长度/key_id、目录权限、超时与 lease 关系;缺失或不安全时 fail closed。`CHORUS_ENV=production` 下若检测到 AutoMigrate 或 dev-tools 注册必须拒绝启动。
|
||||
@@ -97,6 +101,13 @@ journalctl -u chorus-portal -n 100 --no-pager
|
||||
|
||||
MVP-1 同样检查 admin 8081。外部检查经 TLS/nginx 访问,不把内部端口暴露公网。
|
||||
|
||||
## portal 会话与请求边界
|
||||
|
||||
MVP-0 的终端用户会话保存在单个 portal 进程内存中,Cookie 只携带签名后的不透明 session ID。部署必须保持单实例;portal 重启或切换版本会让全部终端用户重新登录。不要在负载均衡后启动多个 portal 实例,除非先建立新的共享会话设计和工单。
|
||||
|
||||
生产 Cookie 必须为 Secure/HttpOnly/SameSite=Lax。反向代理不得记录 Cookie 或 CSRF header;请求日志和 GORM SQL 使用参数化输出。JSON 正文、multipart 总量、单图字节/像素/数量和历史查询都有显式生产配置,缺少任一阈值时启动失败。
|
||||
|
||||
上传先在应用层校验,再在 generation 事务回调中保存带 owner/generation metadata 的文件。事务失败只清理本请求保存的 key;存储根目录不能作为 nginx/static 目录暴露。
|
||||
## worker 优雅退出
|
||||
|
||||
- 收到 TERM 后先停止认领新任务;
|
||||
|
||||
Reference in New Issue
Block a user