我有一个问题,我似乎无法访问 Cloudflare 在代理请求时传递客户端源 IP 的标头。
标题应HTTP_CF_CONNECTING_IP
根据 Cloudflare 的文档,我的网站托管在 Heroku 上。
我有以下机架攻击设置,但即使在生产环境HTTP_CF_CONNECTING_IP
中也根本没有记录。
class Rack::Attack
Rack::Attack.cache.store = ActiveSupport::Cache::MemoryStore.new
class Request < ::Rack::Request
def remote_ip
@remote_ip ||= (env['HTTP_CF_CONNECTING_IP'] || env['action_dispatch.remote_ip'] || ip).to_s
end
end
track('Log all requests') do |req|
puts req.ip # returns an IP
puts req.env['action_dispatch.remote_ip'] # returns the same IP as req.ip
puts req.env['HTTP_CF_CONNECTING_IP'] # doesn't show anything
req.remote_ip
end
end
我正在使用 Cloudflare 的免费版本,并想知道这是否有任何区别,但目前它无法使用 Rack Attack,因为我似乎只是阻止了所有人。
任何帮助将非常感激。