1.4 KiB
1.4 KiB
每日限流中间件使用指南
概述
每日限流中间件实现了多层限流策略:
- 接口一天最大请求200次
- 一个IP一天最多10次
- 支持并发限制和安全防护
主要特性
-
多层限流策略
- 接口总请求限制:200次/天
- IP请求限制:10次/天/IP
- 并发请求限制:5个/IP
-
安全防护
- IP白名单/黑名单
- User-Agent检查
- Referer验证
- 代理检测
使用方法
// 配置限流参数
limitConfig := middleware.DailyRateLimitConfig{
MaxRequestsPerDay: 200, // 接口一天最大请求200次
MaxRequestsPerIP: 10, // 一个IP一天最多10次
KeyPrefix: "api_limit", // Redis键前缀
TTL: 24 * time.Hour, // 24小时过期
MaxConcurrent: 5, // 最大并发5个
}
// 创建中间件实例
rateLimitMiddleware := middleware.NewDailyRateLimitMiddleware(
config, redisClient, response, logger, limitConfig)
// 应用到路由
router.Use(rateLimitMiddleware.Handle())
限流逻辑
- 检查IP访问权限
- 验证User-Agent和Referer
- 检查并发限制
- 检查接口总请求次数(200次/天)
- 检查IP请求次数(10次/天)
- 更新计数器
监控信息
响应头包含隐藏的监控信息:
X-Total-Count: 当前总请求次数X-IP-Count: 当前IP请求次数X-Reset-Time: 重置时间