在 .NET Core 5.0 中使用 IpRateLimiting 库进行常规配置的 JSON 文件如下所示:

{
  "IpRateLimiting": {
    "EnableEndpointRateLimiting": true,
    "StackBlockedRequests": false,
    "RealIpHeader": "X-Real-IP",
    "ClientIdHeader": "X-ClientId",
    "HttpStatusCode": 429,
    "GeneralRules": [
      {
        "Endpoint": "*",
        "Period": "1s",
        "Limit": 5,
        "CounterKeyBuilder": "Path",
        "Priority": 1
      },
      {
        "Endpoint": "*",
        "Period": "1m",
        "Limit": 100,
        "CounterKeyBuilder": "ClientId",
        "Priority": 2
      }
    ],
    "EndpointRules": [
      {
        "Endpoint": "/api/values",
        "Period": "1m",
        "Limit": 10,
        "CounterKeyBuilder": "Path",
        "Priority": 3
      }
    ]
  }
}

上述 JSON 文件中的配置项说明如下:

  • EnableEndpointRateLimiting: 是否启用端点速率限制。
  • StackBlockedRequests: 是否在 IP 被限制时,将请求堆积在队列中等待。
  • RealIpHeader: 指定用于获取真实 IP 的请求头。
  • ClientIdHeader: 指定用于获取客户端 ID 的请求头。
  • HttpStatusCode: 当请求被限制时返回的 HTTP 状态码。
  • GeneralRules: 通用规则列表,用于配置所有端点的速率限制。
    • Endpoint: 端点路径,使用 * 表示所有端点。
    • Period: 限制周期,以秒或分钟为单位。
    • Limit: 限制每个周期内的请求数量。
    • CounterKeyBuilder: 用于构建计数器键的方式,可选值为 PathClientId
    • Priority: 规则的优先级,数字越小优先级越高。
  • EndpointRules: 端点规则列表,用于配置特定端点的速率限制,优先级高于通用规则。

请根据实际需求进行相应的配置

net core 50 IpRateLimiting 常规配置json

原文地址: http://www.cveoy.top/t/topic/ikLd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录