学习C#调用AspNetCoreRateLimit包限制客户端访问次数(2:配置说明)

使用AspNetCoreRateLimit限流时,appsettings.json文件中支持两类限流设置,如下图所示(示例来自参考文献2),IpRateLimiting配置全局通用规则,包括全局行为、通用规则和白名单等,IpRateLimitPolicies配置特定IP或IP段的限流规则,其优先级高于IpRateLimiting。

  EnableEndpointRateLimiting:值为false时,仅endpoint值为*的规则生效,且所有请求共享全局限制,例如设置每秒限制5次请求,来自终端的所有所有HTTP请求方法都算在5次之内;值为true时则会针对每个 {HTTP方法}{路径} 格式的endpoint端点独立生效。例如,若endpoint为*:/api/values 设置每秒 5 次调用的限制,则终端每秒既可调用5次GET /api/values,也可调用5次PUT /api/values。
  StackBlockedRequests:值为false时,被拒绝的终端请求不会计入节流计数器,例如终端每秒请求3次,但限流设置为每秒1次,其它限流计数器(如每分钟次数、每天次数)只会将每秒的第一次请求纳入计数。如果想将被拒绝的请求也计入其他限流计数器,则应将值设置为true。
  RealIpHeader:用于当Kestrel服务位于反向代理后时提取客户端真实 IP。如果代理服务器使用的不是X-Real-IP标头,可通过此选项设置标头。
  ClientIdHeader:用于提取客户端ID以进行白名单验证。如果标头中存在客户端ID,且与ClientWhitelist中指定的值匹配,则不会对该请求做速率限制。
  HttpStatusCode :满足速率限制条件驳回客户端请求时返回的状态码。
  IpWhitelist:终端IP白名单,支持ip v4和ip v6格式,用于配置不需要限流的特定IP。
  EndpointWhitelist:请求路径白名单,用于配置不需要限流的特定请求路径和方法。
  ClientWhitelist:客户端ID白名单,用于配置不需要限流的特定客户端ID。
  IP :IpRateLimitPolicies节中指定特定IP或IP段的限流规则,支持IP v4 和IP v6,也支持范围值,如192.168.0.0/24,fe80::/10 ,192.168.0.0-192.168.0.255;
  Endpoint:设置限流规则适用的请求地址,格式为{HTTP_Verb}:{PATH},支持常规字符串、通配符或正则表达式,如"Endpoint": "*:/api/values","Endpoint": ":/api/values","Endpoint": "((post)|(put)):/api/values","Endpoint": "get:/api/values"。
  Period:设置限流周期,格式为{INT}{PERIOD_TYPE},PERIOD_TYPE取值包括s(秒), m(分), h(小时), d(天),如1s、15m、20h;
  Limit:设置限流周期内的限制请求次数,格式为{LONG},长整数值。

参考文献:

1\]https://github.com/stefanprodan/AspNetCoreRateLimit \[2\]https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware \[3\]https://juejin.cn/post/6987253631309316127 \[4\]https://blog.csdn.net/weixin_33835103/article/details/94167340

相关推荐
2501_9307077818 分钟前
使用 C# .NET 从 PowerPoint 演示文稿中提取背景图片
c#·powerpoint·.net
初级代码游戏1 小时前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
大空大地20262 小时前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#
kylezhao20194 小时前
C#序列化与反序列化详细讲解与应用
c#
JQLvopkk4 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
故事不长丨4 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
kingwebo'sZone4 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
大空大地20265 小时前
表达式与运算符
c#
向上的车轮5 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
心疼你的一切7 小时前
Unity异步编程神器:Unitask库深度解析(功能+实战案例+API全指南)
深度学习·unity·c#·游戏引擎·unitask