[rack-attack] throttleの挙動確認方法
目的
前提条件
手順
1. ローカル環境をホワイトリストから除外する
# config/initializers/rack_attack.rb # NOTE: ローカル開発環境で挙動を確認するには下記をコメントアウトする safelist('allow from localhost', &:allowed_ip?)
2. キャッシュを有効にする
ターミナルからrails dev:cache
を入力
tmp/caching-dev.txt
が作成される(すでに作成されている場合は不要)
# config/environments/development.rb if Rails.root.join('tmp', 'caching-dev.txt').exist? config.action_controller.perform_caching = true config.action_controller.enable_fragment_cache_logging = true config.cache_store = :mem_cache_store, "#{ENV['MEMCACHED_EXTERNAL_HOST'] || 'localhost'}:#{ENV['MEMCACHED_EXTERNAL_PORT'] || '11211'}", { expire_in: 2.hours } config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{2.days.to_i}", } else config.action_controller.perform_caching = false config.cache_store = :null_store end
3. サーバーを再起動し、リロード(⌘+R)しまくるとアクセス拒否される。
メモ
throttleの回数はキャッシュで管理している