Rack middleware for rate-limiting incoming HTTP requests with black_list and white_list support.
Add this line to your application's Gemfile:
gem 'limiter', :git => "git://github.com/csdn-dev/limiter.git"
And then execute:
$ bundle
# config/initializers/limiter.rb# -*- encoding : utf-8 -*-requireFile.expand_path("../redis",__FILE__)Rails.configuration.app_middleware.insert_before(Rack::MethodOverride,Limiter::RateLimiter,:max_get_num=>1000,:get_ttl=>20.minutes,:max_post_num=>20,:post_ttl=>5.seconds,:filter_ip_segment=>true,# default true:black_list=>Limiter::BlackList.new($redis),:white_list=>Limiter::WhiteList.new($redis),:allow_path=>Rails.env.development? ? /^\/(assets|human_validations|simple_captcha)/ :
/^\/(human_validations|simple_captcha)/,:message=>"<a href='/human_validations/new'>我不是机器人</a>",:visit_counter=>Limiter::VisitCounter.new($redis),:limit_callback=>lambda{ |ip| your_callback(ip)})- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request