# 每日限流中间件使用指南 ## 概述 每日限流中间件实现了多层限流策略: - 接口一天最大请求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`: 重置时间