一个 AI 网关通常同时有两类访问者:人通过浏览器看后台,程序通过 API 调用模型。两者需要不同的认证方式。
浏览器访问
管理页面、登录页和管理 API 使用 Cloudflare Access。你在另一台 Mac 上打开 CCX,使用同一个账号通过 Access,再进入 CCX 自己的登录页面即可。Access 的登录跳转链接是临时的,旧链接出现 403 时,重新打开根地址就会生成新的流程。
程序访问
外部程序继续使用原来的 API Key 和 OpenAI-compatible 路径,例如 https://ccx.acharls.com/v1。程序不应该模拟浏览器登录,也不应该携带 Access Cookie。
源站也要验证
只在 Cloudflare 控制台设置 Access 还不够,因为源站 IP 可能被直接访问。现在 CCX 的管理路径在 VPS 本机再经过 JWT 校验:没有有效的 Cloudflare Access JWT,直接访问源站也会返回 401。
实际结果
- 公开访问 `/login`:跳转到 Cloudflare Access。
- 公开访问 `/api/v1`:需要 Access。
- 公开访问 `/v1/models`:不进入 Access,继续由 API Key 控制。
- 直接访问源站管理路径:被本机校验器拒绝。