系统设置指南
安全与限制配置
Root 配置模型请求速率限制、SSRF 防护和用户 API 密钥数量限制。
- 安全与限制配置位于
/system-settings/security,仅 Root 可访问。 - 该工作区包含「速率限制」「SSRF 保护」和「令牌限制」三个分区,用于控制模型请求频率、出站访问安全与密钥数量。
安全与限制配置简介
安全与限制域下有三个独立分区:
| 分区 | 路径 | 职责 |
|---|---|---|
| 速率限制 | /system-settings/security/rate-limit(默认进入) | 模型请求速率限制(全局 + 分组覆盖)。 |
| SSRF 保护 | /system-settings/security/ssrf | 出站请求的域名/IP/端口白黑名单。 |
| 令牌限制 | /system-settings/security/token-limits | 每用户 API 密钥数量上限。 |
配置分区
速率限制
- 安全与限制-速率限制

- 全局限制
| 字段 | 校验/默认 | 说明 |
|---|---|---|
| 启用速率限制 | 默认关闭 | 此处仅控制模型请求速率限制。Web/API 路由限流由环境变量配置。 |
| 限制周期 | ≥0,默认 1 | 速率限制的时间窗口(单位:分钟);同时作用于所有分组规则。 |
| 每周期最大请求数 | ≥0,默认 0 | 限制周期内允许的请求总数(含失败);0 = 无限制。 |
| 最大成功请求数 | ≥1,默认 1000 | 限制周期内允许的成功请求数(响应状态码低于 400 计为成功)。 |
- 模型请求路由按登录用户(同一用户跨多个 API 密钥共享计数)计数并受速率限制;
- Web/API 路由限流则由独立环境变量控制并按 IP 计数;
- 限制周期内任一计数超限即返回 429 限流错误
- 基于分组的速率限制
除全局限制外,可以为特定分组(用户分组或 API 密钥分组)覆盖设置每周期最大请求数(含失败)和最大成功请求数。
分组规则 JSON 结构为 {"分组名":[最大请求数(含失败),成功请求数]}:
规则可通过表格可视化编辑器维护,支持搜索、添加、编辑与删除;也可切换到 JSON 模式直接编辑原始 JSON。
操作流程:
- 点击「添加分组」。
- 在弹窗中输入分组名称(须与用户分组或 API 密钥分组的名称完全一致),填写最大请求数(含失败)与最大成功请求数。
- 点击「添加」后确认规则已加入列表,再点击页头「保存速率限制」写入(编辑、删除规则后同样需要保存);需要精确控制时切换到 JSON 模式核对。
- 用该分组下的 API 密钥发起请求验证。
- 安全与限制-添加分组

- 安全与限制-编辑分组

分组规则仅在请求对应的分组键(API 密钥分组或用户分组)出现在规则中时生效;未命中任何分组规则时使用全局限制。空规则集表示全部使用全局。
- 相关环境变量
除页面上的四项速率限制配置外,安全与限制还涉及以下启动时环境变量(主要是全局限流)。
| 环境变量 | 默认值 | 作用 | 计数维度 |
|---|---|---|---|
GLOBAL_API_RATE_LIMIT_ENABLE | true | 是否启用 API 全局限流。 | — |
GLOBAL_API_RATE_LIMIT | 360 | 每个 IP 在窗口内允许的 API 请求数。 | 按 IP |
GLOBAL_API_RATE_LIMIT_DURATION | 180 | API 限流窗口(秒)。 | — |
GLOBAL_WEB_RATE_LIMIT_ENABLE | true | 是否启用 Web 全局限流。 | — |
GLOBAL_WEB_RATE_LIMIT | 120 | 每个 IP 允许的 Web 请求数。 | 按 IP |
GLOBAL_WEB_RATE_LIMIT_DURATION | 180 | Web 限流窗口(秒)。 | — |
CRITICAL_RATE_LIMIT_ENABLE | true | 关键接口限流开关。 | — |
CRITICAL_RATE_LIMIT | 20 | 每个 IP 允许的关键请求数。 | 按 IP |
CRITICAL_RATE_LIMIT_DURATION | 1200 | 关键限流窗口(秒,约 20 分钟)。 | — |
SEARCH_RATE_LIMIT_ENABLE | true | 搜索限流开关。 | — |
SEARCH_RATE_LIMIT | 10 | 每个用户允许的搜索请求数。 | 按用户 |
SEARCH_RATE_LIMIT_DURATION | 60 | 搜索限流窗口(秒)。 | — |
(下载与上传另有 DownloadRateLimitNum / UploadRateLimitNum,默认 10。)
各变量的作用范围:
- Global API:作用于所有
/api/*路由,按客户端 IP 计数。 - Global Web:作用于 web 页面/路由,按 IP 计数。
- Critical:作用于注册、登录、密码重置、OAuth state/回调、Passkey、Access Token、2FA 验证、验证码等关键/匿名接口,按 IP计数。
- Search:作用于搜索端点,按用户计数。
这些变量可以通过部署环境或启动配置设置,修改后需重启服务才生效;多实例部署需保持一致。
SSRF 保护
- 安全与限制-SSRF 保护

SSRF 防护用于限制服务端出站 HTTP 请求允许访问的域名与 IP,避免请求被用于访问内网或回环地址。共 8 个字段:
| 字段 | 说明 |
|---|---|
| 启用 SSRF 保护 | 开启后所有受保护出站请求会被检查,防止服务器端请求伪造攻击。 |
| 允许私有 IP | 开启后允许访问私有/保留 IP;允许请求私有 IP 范围 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)。 |
| 域名过滤模式 | 黑名单(仅阻断列出的域名), 白名单(仅允许列出的域名)。IP 字面量 URL(如 http://203.0.113.10/)不匹配域名列表。 |
| 域名 黑名单 / 域名 白名单 | 标签随「域名过滤模式」切换。每行一个域名。白名单且列表为空时全部阻断;黑名单且列表为空时全部放行。 |
| IP 过滤模式 | 黑名单,白名单。 |
| IP 黑名单 / IP 白名单 | 标签随「IP 过滤模式」切换。每行一个 IP 或 CIDR 范围(如 10.0.0.0/8、192.168.1.1)。 |
| 允许的端口 | 允许的端口的逗号分隔列表(如80、443、8080、8443);留空 = 所有端口。 |
| 对已解析的域应用 IP 筛选器 | 开启后,当目标为域名时,会把域名解析出的每一个 IP 再按 IP 过滤规则校验后才连接;用于防止 DNS 重绑定绕过。默认开启;关闭后,通过域名访问时只校验端口和域名规则,不检查解析出的 IP(包括私有 IP)。 |
执行边界:
- 生效于受保护出站 HTTP 客户端、下载请求、Midjourney 图片拉取、视频代理、Webhook 与 Bark/Gotify 通知等出站请求;转发到上游渠道的请求本身不做 SSRF 检查。
- 仅允许
http:///https://地址;域名解析失败会报错。 - 对域名同时校验「请求时」与「拨号时」(dial-time),避免解析后回环 IP 绕过。
- 关闭「允许私有 IP」时,指向内网或回环 IP 地址的下载、Webhook、通知等出站目标会被拦截;通过域名访问的目标仅在「对已解析的域应用 IP 筛选器」开启时才会检查解析出的 IP,关闭后解析到内网地址的域名不会被拦截。转发到上游渠道的请求不受影响。
- 域名白名单启用后请同时注意「对已解析的域应用 IP 筛选器」:它会让解析出的每个 IP 再受 IP 规则约束;
- 若 IP 列表为空且为黑名单模式则全部放行;若为白名单且为空则全部阻断。
令牌限制
- 安全与限制-令牌限制

「令牌限制」只有「每个用户的最大令牌数」一个字段(默认 1000),控制每个用户可创建的最大令牌数量(设置过大可能会影响性能);在创建 API 密钥(POST /api/token)时校验:当前用户密钥数达到上限后,新密钥会被拒绝。
保存与生效
- 各分区按字段逐项保存:先计算变更字段,再对每个变更字段单独提交
PUT /api/option/。 SSRF的列表字段以 JSON 字符串保存:域名列表、IP 列表按每行一个,允许端口按逗号分隔,转换为数组后提交。- 配置写入后当前进程更新内存值;多实例部署中的其他节点按
SYNC_FREQUENCY周期重新载入(默认约 60 秒),同步完成前不同节点可能短暂不一致。
注意事项
- 速率限制:只作用于模型请求路由、按登录用户计数;全局
Global/API/Web/Critical限流由环境变量控制、按 IP 计数,二者相互独立。 - 分组规则共享窗口:分组仅覆盖次数,窗口与全局一致。
- SSRF 私网范围:关闭「允许私有 IP」会拦截比界面列出网段更广的 IANA 私有/保留段。
- SSRF 黑白名单语义:白名单为空=全部阻断,黑名单为空=全部放行;域名通配只在域名层生效,IP 过滤在解析后对每个 IP 生效。
- SSRF 默认端口:后端默认
80/443/8080/8443;为空表示全部端口允许。 - 令牌限制:是每用户密钥数量上限,达到上限后创建被拒;密钥数超过上限(如调低上限后)时,带
%通配符的模糊搜索会被拒绝,只能精确搜索。 - 机制为「阻止并返回错误」,不是静默重试:限流、SSRF 命中时对应请求都会失败,客户端按错误处理即可。
常见问题
- 限流未生效:确认「启用速率限制」已开、窗口与次数不超过(默认总数
0=不限、成功数1000),并确认请求走的是模型请求路由(不是/api、站点页面)。也要区分是否命中GLOBAL_*_RATE_LIMIT导致的 IP 级429。 - 全局限流 429 从何而来:检查
GLOBAL_API_RATE_LIMIT_*、GLOBAL_WEB_RATE_LIMIT_*、CRITICAL_RATE_LIMIT_*、SEARCH_RATE_LIMIT_*等环境变量及作用范围;这些是启动时变量,修改后需重启。环境变量限流返回的 429 没有响应体(可能带Retry-After头),本页模型限流的 429 带错误消息(如「您已达到请求数限制:…」),可据此区分;两类限流相互独立。 - 分组规则不生效:确认分组名与请求的分组键(API 密钥分组或用户分组)完全一致;分组只覆盖次数,周期仍取全局;规则是
{"组名":[总数,成功数]}的 2 元素数组,成功数须 ≥1。 - 窗口无法按分组区分:分组与全局共享同一窗口时长;如需不同窗口,调整全局窗口。
- SSRF 误拦截:检查是否关闭了「允许私有 IP」,或域名/IP 白名单是否覆盖目标;确认端口在允许列表中;域名场景检查「对已解析的域应用 IP 筛选器」是否把解析 IP 拦掉。
- SSRF 漏放:检查黑名单是否未包含目标地址、允许端口是否为空(空=全部允许)、以及黑白名单模式是否符合预期。
- 出站目标为域名但偶发失败:多为 DNS 重绑定或被解析出的某个 IP 命中 IP 规则;开启「对已解析的域应用 IP 筛选器」并按网络实际情况补充 IP 白名单/黑名单。
- 创建密钥被拒:当前用户密钥数已达
token_setting.max_user_tokens上限;删除部分密钥(禁用或过期的密钥仍计入数量),或调高上限。 - 搜索密钥提示仅允许精确搜索:用户密钥数超过上限时,带
%通配符的模糊搜索会被拒绝,并提示「令牌数量超过上限,仅允许精确搜索,请勿使用 % 通配符」;调高上限或删除部分密钥后恢复。