有没有办法实现 IP 过滤或 IP 访问规则,就像我使用 nginx/apache 来限制或阻止 Heroku 上的某些 IP?
注意:我知道这可以很容易地在我的应用程序(Rails 3.2)中完成,但我认为这不是在 Heroku 上最有效地使用我的资源。此外,基于 Rack 的解决方案比在 Rails 中实现过滤要好。
有没有办法实现 IP 过滤或 IP 访问规则,就像我使用 nginx/apache 来限制或阻止 Heroku 上的某些 IP?
注意:我知道这可以很容易地在我的应用程序(Rails 3.2)中完成,但我认为这不是在 Heroku 上最有效地使用我的资源。此外,基于 Rack 的解决方案比在 Rails 中实现过滤要好。
你应该检查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
我添加了“机架块”作为机架中间件。在 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
奇迹般有效。