3

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

Rails.logger.error request.remote_ip
Rails.logger.error request.env["REMOTE_ADDR"]

但结果有些奇怪:10.130.150.25410.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"]

但是那些给了我空字符串。

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

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

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

我正在使用 Apache 和Passenger 为应用程序提供服务。

request.remote_ip ”是一个类似的问题。

4

2 回答 2

5

事实证明,我们的 IT 没有配置为在负载均衡器上传递它。一旦他完成配置,它就可以工作了。两者都request.env["HTTP_X_FORWARDED_FOR"]有效request.remote_ip

于 2013-10-29T21:40:20.570 回答
-1

希望这会有所帮助

env['action_dispatch.remote_ip'].calculate_ip

于 2014-04-16T16:46:02.297 回答