4.7 JWT、HTTP 与静态资源

JWT、HTTP 与静态资源

本节说明登录密钥、监听地址、代理和嵌入资源。短链域名不在这里全局配置,而是在管理后台“域名”页面按工作区维护。

JWT

jwt:
  secret: "至少 32 字节、来自密码学安全随机源的值"
  expire_hours: 24

jwt.secret 为空,服务会生成随机值并尝试追加到现有配置文件。生产环境应显式提供 JWT_SECRET 并安全备份;多实例必须一致。更换密钥会使现有登录 JWT 失效,用户需要重新登录。

API Token 的生命周期独立于登录 JWT。删除 Token 或禁用关联用户会使相应 API 认证失效。详见认证与工作区

HTTP

app:
  mode: release
http:
  addr: ":8080"
  mode: release
  load_static: true
  • HTTP_ADDR 控制监听地址。
  • HTTP_MODE 控制 HTTP 运行模式。
  • APP_MODE 控制日志驱动;生产环境同样设为 release
  • 应用本身以 HTTP 提供服务,公网 HTTPS 通常由反向代理终止。

反向代理必须保留原始 Host,否则服务无法按 Host 匹配短链域名。

静态资源和模板

发布版通过 go:embed 内置:

static/admin/**
templates/**
migrations/**

生产默认使用 embed,无需额外复制。开发时可切换为磁盘模式:

http:
  mode: debug
  static_mode: disk
  static_dir:
    - admin
  templates_mode: disk
  templates_dir: templates

http.static_dir 是静态子目录列表,默认只发布 admin,对应 URL 前缀 /admin/。磁盘模式使用相对于进程工作目录的文件,修改工作目录会影响解析。

品牌上传

系统品牌 Logo 上传后保存在 data/uploads/branding/,通过 /uploads/branding/<filename> 访问。即使静态资源使用 embed,也必须持久化 data/,否则容器重建会丢失上传文件。

上线检查

  • /admin/ 可以加载且无静态资源 404;
  • /favicon.ico 能跳转到管理端图标;
  • /health 返回数据库 UP
  • 外部 HTTPS 请求的 Host、客户端 IP 和协议头被正确转发;
  • 登录 JWT 在多个实例间均可验证;
  • data/uploads/branding/ 可写并已纳入备份。

相关章节:Docker 部署前端开发