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(Configuration.GetSection("IpRateLimiting")); ? //load ip rules from appsettings.json services.Configure (Configuration.GetSection("IpRateLimitPolicies")); ? // inject counter and rules stores services.AddInMemoryRateLimiting(); //services.AddDistributedRateLimiting (); //services.AddDistributedRateLimiting(); //services.AddRedisRateLimiting(); ? // Add framework services. //services.AddMvc(); ? // configuration (resolvers, counter key builders) services.AddSingleton(); } 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文件
-