add limit
This commit is contained in:
57
docs/每日限流中间件使用指南.md
Normal file
57
docs/每日限流中间件使用指南.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# 每日限流中间件使用指南
|
||||
|
||||
## 概述
|
||||
|
||||
每日限流中间件实现了多层限流策略:
|
||||
- 接口一天最大请求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`: 重置时间
|
||||
Reference in New Issue
Block a user