Skip to main content

Module rate_limit

Module rate_limit 

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