Ruby on Rails:如何获取客户端IP地址

Pet*_*Lee 2 ruby ruby-on-rails ip-address

我搜索了很多,但我找不到解决方案.我试过了:

Rails.logger.error request.remote_ip
Rails.logger.error request.env["REMOTE_ADDR"]
Run Code Online (Sandbox Code Playgroud)

但结果有些奇怪:10.130.150.254或者10.130.150.251.

我用我的手机的LTE/4G网络进行测试,它总是给我10.130.247.251,这是一个A类保留的专用网络IP地址.

我也尝试过:

Rails.logger.error request.env["HTTP_X_FORWARDED_FOR"]
Rails.logger.error request.env["HTTP_X_REAL_IP"]
Rails.logger.error request.env["HTTP_X_CLUSTER_CLIENT_IP"]
Run Code Online (Sandbox Code Playgroud)

但那些让我空洞的话.

当我使用手机并指向touch.whatsmyip.org时,它会给我:172.56.9.89,这是一个公共IP地址.

我们使用HTTPS SSL终止和负载均衡器,它可能看起来像" 在负载均衡器(ELB)后面获取远程主机客户端IP ".

如何获取客户端IP地址?如果客户端在代理后面,那很好,那么代理IP地址对我也有好处.

我正在使用Apache和Passenger来提供应用程序.

" request.remote_ip "是一个类似的问题.

Pet*_*Lee 5

事实证明,我们的IT部门尚未配置为在Load Balancer上传递它.完成配置后,就可以了.无论request.env["HTTP_X_FORWARDED_FOR"]request.remote_ip作品.

  • 我相信你知道,如果你不是,你应该到现在,但只是再次迭代:将它用于任何类型的公共服务是不可靠的所以不要让任何逻辑依赖于此除非您知道服务器的访问者很可能不是欺骗(即办公室间服务). (2认同)