RateLimitConfig.json 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. {
  2. // IP限流配置
  3. "IpRateLimiting": {
  4. // 例如设置了5次每分钟访问限流
  5. // 当False时:每个接口都加入计数,不管你访问哪个接口,只要在一分钟内累计够5次,将禁止访问。
  6. // 当True 时:当一分钟请求了5次GetData接口,则该接口将在时间段内禁止访问,但是还可以访问PostData()5次,总得来说是每个接口都有5次在这一分钟,互不干扰。
  7. "EnableEndpointRateLimiting": true,
  8. // 如果StackBlockedRequests设置为false,拒绝的API调用不会添加到调用次数计数器上。比如:如果客户端每秒发出3个请求并且您设置了每秒一个调用的限制,
  9. // 则每分钟或每天计数器等其他限制将仅记录第一个调用,即成功的API调用。如果您希望被拒绝的API调用计入其他时间的显示(分钟,小时等),则必须设置
  10. "StackBlockedRequests": false,
  11. // 在RealIpHeader使用时,你的Kestrel服务器背后是一个反向代理,如果你的代理服务器使用不同的页眉然后提取客户端IP X-Real-IP使用此选项来设置它。
  12. "RealIpHeader": "X-Real-IP",
  13. // 将ClientIdHeader被用于提取白名单的客户端ID。如果此标头中存在客户端ID并且与ClientWhitelist中指定的值匹配,则不应用速率限制。
  14. "ClientIdHeader": "X-ClientId",
  15. // IP白名单:支持Ip v4和v6
  16. "IpWhitelist": [],
  17. // 端点白名单
  18. "EndpointWhitelist": [],
  19. // 客户端白名单
  20. "ClientWhitelist": [],
  21. "QuotaExceededResponse": {
  22. "Content": "{{\"code\":429,\"type\":\"error\",\"message\":\"访问过于频繁,请稍后重试!\",\"result\":null,\"extras\":null}}",
  23. "ContentType": "application/json",
  24. "StatusCode": 429
  25. },
  26. // 返回状态码
  27. "HttpStatusCode": 429,
  28. // API规则,结尾一定要带*
  29. "GeneralRules": [
  30. // 1秒钟只能调用1次
  31. {
  32. "Endpoint": "*",
  33. "Period": "1s",
  34. "Limit": 1
  35. },
  36. // 1分钟只能调用100次
  37. {
  38. "Endpoint": "*",
  39. "Period": "1m",
  40. "Limit": 100
  41. },
  42. // 1小时只能调用1000
  43. {
  44. "Endpoint": "*",
  45. "Period": "1h",
  46. "Limit": 1000
  47. },
  48. // 1天只能调用10000次
  49. {
  50. "Endpoint": "*",
  51. "Period": "1d",
  52. "Limit": 10000
  53. }
  54. ]
  55. },
  56. "IpRateLimitPolicies": {
  57. "IpRules": [
  58. {
  59. "Ip": "XXX.XXX.XXX.XXX",
  60. "Rules": [
  61. {
  62. "Endpoint": "*",
  63. "Period": "1s",
  64. "Limit": 1
  65. },
  66. {
  67. "Endpoint": "*",
  68. "Period": "1m",
  69. "Limit": 100
  70. }
  71. ]
  72. }
  73. ]
  74. },
  75. // 客户端限流配置
  76. "ClientRateLimiting": {
  77. "EnableEndpointRateLimiting": true,
  78. "ClientIdHeader": "X-ClientId",
  79. "EndpointWhitelist": [],
  80. "ClientWhitelist": [],
  81. "QuotaExceededResponse": {
  82. "Content": "{{\"code\":429,\"type\":\"error\",\"message\":\"访问人数过多,请稍后重试!\",\"result\":null,\"extras\":null}}",
  83. "ContentType": "application/json",
  84. "StatusCode": 429
  85. },
  86. "HttpStatusCode": 429,
  87. "GeneralRules": [
  88. {
  89. "Endpoint": "*",
  90. "Period": "1s",
  91. "Limit": 1
  92. },
  93. {
  94. "Endpoint": "*",
  95. "Period": "1m",
  96. "Limit": 100
  97. }
  98. ]
  99. },
  100. "ClientRateLimitPolicies": {
  101. "ClientRules": [
  102. {
  103. "ClientId": "xxx-xxx",
  104. "Rules": [
  105. {
  106. "Endpoint": "*",
  107. "Period": "1s",
  108. "Limit": 1
  109. },
  110. {
  111. "Endpoint": "*",
  112. "Period": "1m",
  113. "Limit": 100
  114. }
  115. ]
  116. }
  117. ]
  118. }
  119. }