Rack::Ratelimit - 精心设计的速率限制中间件
Rack::Ratelimit 是一个Rack中间件,用于限制HTTP请求的频率。以下是如何在Ruby on Rails应用程序中使用Rack::Ratelimit的示例:
- 首先,确保你的Gemfile包含了
rack-attack
gem:
gem 'rack-attack'
- 运行
bundle install
来安装这个gem。 - 接下来,在Rails应用程序的配置文件中(例如
config/initializers/rack_attack.rb
)配置Rack::Ratelimit:
Rack::Attack.enabled = true
# 限制每个IP每分钟不超过60个请求
Rack::Attack.throttle('limit each IP to 60 requests per minute', limit: 60, period: 1.minute) do |request|
request.ip # 使用IP地址作为标识
end
# 响应限制时的行为
Rack::Attack.throttled_response = lambda do |env|
# 返回429状态码,表示客户端过多请求
[429, {}, ['Too many requests']]
end
- 确保Rack::Attack在应用程序的中间件堆栈中:
# config/application.rb
config.middleware.use Rack::Attack
现在,每个IP每分钟只能发送60个请求,超过限制的请求会返回状态码429。这是一个简单的速率限制配置,你可以根据需要调整限制的策略。
评论已关闭