Как вы можете блокировать или фильтровать IP-адреса на Heroku?

есть ли способ реализовать IP-фильтрацию или правила доступа IP, как я бы с nginx/apache, чтобы ограничить или заблокировать определенные IP-адреса на Heroku?

Примечание: Я знаю, что это можно сделать из моего приложения (Rails 3.2) очень легко, но я не думаю, что это наиболее эффективное использование моих ресурсов на Heroku. Кроме того, решение на основе стойки было бы лучше, чем реализация фильтрации в Rails.

2 ответов


добавил 'rack-block' в качестве "прослойки" Rack. В config/initializers добавьте новый файл:

YourApp::Application.configure do

  config.middleware.insert_before(Rack::Lock, Rack::Block) do  
    # Add your rules with the rack-block syntax in here
  end

end

работает как шарм.


вы должны проверить rack-attack. Похоже, что он делает то же самое, что и rack-block, Но гораздо более широко используется и часто обновляется. Чтобы заблокировать определенный IP, вы можете сделать следующее:

# Block requests from 1.2.3.4
Rack::Attack.blacklist('block 1.2.3.4') do |req|
  # Requests are blocked if the return value is truthy
  '1.2.3.4' == req.ip
end