在Rails中获取实际的远程IP?

时间:2011-11-11 07:01:30

标签: ruby-on-rails ip-address

我正在开发rails(2.3.8)应用程序。我需要存储实际客户端的远程IP地址。

request.remote_ip仅返回127.0.0.1

但我需要存储实际的远程IP,例如93.43.56.77。有红宝石可供选择吗?或者怎么做到的?

2 个答案:

答案 0 :(得分:9)

试试这个:

request.env['REMOTE_ADDR']

如果您的请求来自您的开发机器并且开发机器位于您的服务器所在的位置,那么您可能会得到127.0.0.1。但是如果请求来自另一台机器,这将是远程机器的IP。但是,在各种条件下,这可能不是机器的真正IP(机器背后的机器,使用tor或其他工具隐藏它e.t.c。)。

答案 1 :(得分:0)

您的计算机基本上有两个网络接口。

  • ' 93.43.56.77'适用于通过无线或有线连接到网络的网络适配器。
  • ' 127.0.0.1'这是一个连接到自身时使用的虚拟适配器。

您将无法获得要显示的应用程序' 93.43.56.77'除非连接在该连接上运行,这意味着它将需要在另一台计算机上。

如果你如此关注它,你可以轻松地将它推到Heroku,它应该像你期望的那样工作。