使用cloudflare时,在rails中获取客户端IP

时间:2017-07-31 14:21:30

标签: ruby-on-rails

这对我来说有点混乱。 根据文档,如果有人通过代理访问cloudflare,cloudflare将依次按此顺序设置X-Forwarded-For标头:X-Forwarded-For: client-ip, proxy-ip

但是当我在rails中调用request.ip时,它将返回proxy-ip而不是client-ip

那么为什么没有铁路返回client-ip?它是否与工业规范(https://en.wikipedia.org/wiki/X-Forwarded-For)不一致?

修改

这就是我如何快速测试Rails如何返回proxy-ip

command
============================
curl -H "X-Forwarded-For: 74.125.130.100, 206.190.36.45" http://localhost:3000/

index.html
============================
request.ip: <%= request.ip %>
request.remote_ip: <%= request.remote_ip %

我预计它会是74.125.130.100但它总是返回206.190.36.45

1 个答案:

答案 0 :(得分:0)

我认识的专家指出:http://blog.gingerlime.com/2012/rails-ip-spoofing-vulnerabilities-and-protection/

Rails返回无法信任的链中最右边的ip。这是为了处理IP欺骗。