参考文档:https://blog.csdn.net/zls365365/article/details/133627445
文章目录
- 安装NuGet包
- 配置appsettings.json
- 添加中间件
- 测试结果
安装NuGet包
配置appsettings.json
//配置限流,IP限制适应于所有全局,规则为1分钟最多访问10次"IpRateLimiting":{"EnableEndpointRateLimiting":false,"StackBlockedRequests":false,"RealIpHeader":"X-Real-IP",//服务器背后是一个反向代理,如果你的代理服务器使用不同的页眉然后提取客户端IP X-Real-IP使用此选项来设置"ClientIdHeader":"X-ClientId",//取白名单的客户端ID。如果此标头中存在客户端ID并且与ClientWhitelist中指定的值匹配,则不应用速率限制。"HttpStatusCode":429,//限制状态码//"IpWhitelist": [ "127.0.0.1" ],"IpWhitelist":[],//IP白名单:支持Ip v4和v6"GeneralRules":[{"Endpoint":"*",//端点路径"Period":"1m",//时间段,例如1m,您可以使用以下期间类型之一:s, m, h, d。"Limit":10//调用限制}]}#region注册AspNetCoreRateLimit限流组件builder.Services.AddMemoryCache();//下面的IpRateLimiting为限流策略的配置文件结点名称,可以配置多个策略builder.Services.Configure<IpRateLimitOptions>(builder.Configuration.GetSection("IpRateLimiting"));//添加对内存中的 IP 策略存储的支持builder.Services.AddSingleton<IIpPolicyStore,MemoryCacheIpPolicyStore>();builder.Services.AddSingleton<IRateLimitCounterStore,MemoryCacheRateLimitCounterStore>();builder.Services.AddSingleton<IRateLimitConfiguration,RateLimitConfiguration>();builder.Services.AddInMemoryRateLimiting();#endregion添加中间件
app.UseIpRateLimiting();