IP限流中间件
一、在Startup.cs文件中配置
public void ConfigureServices(IServiceCollection services) { // needed to load configuration from appsettings.json services.AddOptions();  // needed to store rate limit counters and ip rules services.AddMemoryCache();  //load general configuration from appsettings.json services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));  //load ip rules from appsettings.json services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));  // inject counter and rules stores services.AddInMemoryRateLimiting(); //services.AddDistributedRateLimiting<AsyncKeyLockProcessingStrategy>(); //services.AddDistributedRateLimiting<RedisProcessingStrategy>(); //services.AddRedisRateLimiting();  // Add framework services. //services.AddMvc();  // configuration (resolvers, counter key builders) services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseIpRateLimiting();//写在路由下面 }
二、在appsettings.json文件中配置
"IpRateLimiting": { "EnableEndpointRateLimiting": false, "StackBlockedRequests": false, "RealIpHeader": "X-Real-IP", "ClientIdHeader": "X-ClientId", "HttpStatusCode": 429, //"IpWhitelist": [ "127.0.0.1", "::1/10", "192.168.0.0/24" ], //"EndpointWhitelist": [ "get:/api/license", "*:/api/status" ], //"ClientWhitelist": [ "dev-id-1", "dev-id-2" ], "GeneralRules": [ { "Endpoint": "*", "Period": "10s", "Limit": 2, "QuotaExceededResponse": { "Content": "访问过于频繁,请稍后再试" } }, { "Endpoint": "*", "Period": "15m", "Limit": 100 }, { "Endpoint": "*", "Period": "12h", "Limit": 1000 }, { "Endpoint": "*", "Period": "7d", "Limit": 10000 } ] }
三、切换中文格式
- 
用Notepad++软件打开appsettings.json文件 
- 
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号