Expand description
限流工具。 基于 governor 的多级限流。
提供 strict、upload、image、comment 四个限流器,
支持从 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 🔒 - IMAGE_
LIMITER 🔒 - STRICT_
LIMITER 🔒 - UNKNOWN_
BUCKET_ 🔒LIMITER - 当无法识别真实客户端 IP(“unknown”)时使用的宽松限流桶。
- UPLOAD_
LIMITER 🔒
Functions§
- check_
code_ exec_ limit - 检查代码执行请求的双层速率限制(每秒突发 + 每日总额)。
- check_
comment_ limit - 检查评论请求是否超出限流阈值。
- check_
image_ limit - 检查图片访问请求是否超出限流阈值,返回 HTTP 状态码。
- check_
strict_ limit - 检查严格限流(注册、登录等敏感接口)。
- check_
upload_ limit - 检查上传请求是否超出限流阈值。
- ensure_
limiter_ 🔒gc - 启动后台限流桶 GC 任务(全进程仅生效一次)。
- env_or 🔒
- 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 轮换攻击下键空间无限膨胀。 - trusted_
proxy_ 🔒count