2011-11-11 15 views
3

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

request.remote_ip只返回127.0.0.1

,但我需要存储实际的远程IP,如93.43.56.77。任何红宝石都可用?或者怎么做到这一点?

+0

[IP地址在rails中]的可能重复(http://stackoverflow.com/questions/3887943/ip-address-in-rails) – Mischa

回答

8

试试这个:

request.env['REMOTE_ADDR'] 

如果您的请求从开发机器来和开发机是你的服务器是,也许你会得到127.0.0.1。但是如果请求来自另一台机器,这将是远程机器的IP。但是,在各种情况下,这可能不是机器的真正IP(机器在代理之后,使用tor或其他工具将其隐藏在e.t.c中)。

+0

'request.env ['REMOTE_ADDR']'也返回127.0.0.1 ' –

+0

@Dhinesh Kumar它工作得很好。请阅读我的评论。我在生产应用程序中使用它,它完美地工作。 –

0

您的电脑基本上有两个网络接口。

  • '93 .43.56.77'这是你的网络适配器,它通过无线或有线连接到网络。
  • '127.0.0.1'是连接到自身时使用的虚拟适配器。

你不会得到应用展示'93 .43.56.77' ,除非该连接运行在这一点上,这意味着将需要在不同的计算机上。

如果您非常关心它,您可以轻松地将它推送到Heroku,并按照您的预期工作。