Как вы можете блокировать или фильтровать IP-адреса на Heroku?
Есть ли способ реализовать правила фильтрации IP-адресов или IP-доступа так же, как и с nginx/apache для ограничения или блокировки определенных IP-адресов на Heroku?
Примечание. Я знаю, что это можно сделать из моего приложения (Rails 3.2) очень легко, но я не думаю, что это наиболее эффективное использование моих ресурсов на Heroku. Кроме того, решение на стойке было бы лучше, чем реализация фильтрации в Rails.
Ответы
Ответ 1
Я добавил '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
Работает как шарм.
Ответ 2
Вы должны проверить rack-attack
. Похоже, он делает то же самое, что и стойку, но гораздо чаще используется и часто обновляется. Чтобы заблокировать определенный 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