Skip to main content

Module rate_limit

Module rate_limit 

Source
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 🔒