58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
# 每日限流中间件使用指南
|
||
|
||
## 概述
|
||
|
||
每日限流中间件实现了多层限流策略:
|
||
- 接口一天最大请求200次
|
||
- 一个IP一天最多10次
|
||
- 支持并发限制和安全防护
|
||
|
||
## 主要特性
|
||
|
||
1. **多层限流策略**
|
||
- 接口总请求限制:200次/天
|
||
- IP请求限制:10次/天/IP
|
||
- 并发请求限制:5个/IP
|
||
|
||
2. **安全防护**
|
||
- IP白名单/黑名单
|
||
- User-Agent检查
|
||
- Referer验证
|
||
- 代理检测
|
||
|
||
## 使用方法
|
||
|
||
```go
|
||
// 配置限流参数
|
||
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())
|
||
```
|
||
|
||
## 限流逻辑
|
||
|
||
1. 检查IP访问权限
|
||
2. 验证User-Agent和Referer
|
||
3. 检查并发限制
|
||
4. 检查接口总请求次数(200次/天)
|
||
5. 检查IP请求次数(10次/天)
|
||
6. 更新计数器
|
||
|
||
## 监控信息
|
||
|
||
响应头包含隐藏的监控信息:
|
||
- `X-Total-Count`: 当前总请求次数
|
||
- `X-IP-Count`: 当前IP请求次数
|
||
- `X-Reset-Time`: 重置时间
|