Expand description
限流工具。 基于 governor 的多级限流。
提供 strict、upload、image、comment、comment_upload(双层)、code_exec(双层)
等限流器,支持从 X-Forwarded-For / X-Real-IP 中提取客户端 IP,
并可通过 TRUSTED_PROXY_COUNT 配置信任代理层数。
当未配置可信代理时,Axum handler 可回退到 TCP 连接的对端地址;
Dioxus server function 无法获取对端地址,会退回到 "unknown" key,
此时所有请求共享一个限流桶。生产环境应在反向代理后部署并正确配置
TRUSTED_PROXY_COUNT。
仅在 feature = "server" 时生效。
Statics§
- CODE_
EXEC_ 🔒DAILY_ LIMITER - 代码执行单 IP 每日限额(默认 50 次/天)。 容器执行成本高(CPU/内存/启动延迟),需要硬性日上限防止资源耗尽。
- CODE_
EXEC_ 🔒LIMITER - 代码执行单 IP 每秒限流(默认 1 req/s,突发 3)。 防止单个客户端高频提交容器任务,与下方日限额共同构成双层速率限制。
- COMMENT_
LIMITER 🔒 - COMMENT_
UPLOAD_ 🔒DAILY_ LIMITER - 评论图片上传单 IP 每日限额(默认 30 次/天)。 匿名可传图意味着任何人都能消耗磁盘,需要硬性日上限(模拟方式同 CODE_EXEC_DAILY_LIMITER:24h 补充 1 token、突发上限即日额度)。
- COMMENT_
UPLOAD_ 🔒LIMITER - 评论图片上传单 IP 每秒限流(默认 1 req/s,突发 5)。 评论区允许匿名上传图片,与 admin 的 UPLOAD_LIMITER 隔离,避免互占额度。
- IMAGE_
LIMITER 🔒 - STRICT_
LIMITER 🔒 - UNKNOWN_
BUCKET_ 🔒LIMITER - 当无法识别真实客户端 IP(“unknown”)时使用的宽松限流桶。
- UPLOAD_
LIMITER 🔒
Functions§
- check_
code_ exec_ limit - 检查代码执行请求的双层速率限制(每秒突发 + 每日总额)。
- check_
comment_ limit - 检查评论请求是否超出限流阈值。
- check_
comment_ upload_ limit - 检查评论图片上传的双层速率限制(每秒突发 + 每日总额)。
- check_
image_ limit - 检查图片访问请求是否超出限流阈值。
- check_
strict_ limit - 检查严格限流(注册、登录等敏感接口)。
- check_
upload_ limit - 检查上传请求是否超出限流阈值。
- ensure_
limiter_ 🔒gc - 启动后台限流桶 GC 任务(全进程仅生效一次)。
- get_
client_ ip - 使用「站点配置 → 安全」面板的代理层数提取客户端 IP。
- get_
client_ 🔒ip_ internal - get_
client_ ip_ with_ peer - 根据信任代理层数从请求头中提取客户端 IP,并校验 IP 合法性。
- ip_
from_ 🔒x_ forwarded_ for - 从
X-Forwarded-For头按信任代理层数提取真实客户端 IP。 - ip_
from_ 🔒x_ real_ ip - is_
valid_ 🔒ip - limiter_
gc_ 🔒interval - 限流桶 GC 间隔(秒):周期性调用 governor 的
retain_recent,回收已恢复为 「初始态」的 IP 键,防止 IP 轮换攻击下键空间无限膨胀。 - nz 🔒
- trusted_
proxy_ 🔒count