【发布时间】:2013-10-11 11:39:15
【问题描述】:
我需要将访问者的 IP 地址存储到我们的数据库中,这是我尝试这样做的方式:
@ip = request.remote_ip
@ip = request.env['REMOTE_ADDR']
但在这两种情况下,@ip 变量都存储了值 127.0.0.1,即使我将应用程序部署到 Amazon EC2 实例也是如此。
当我检查 http://www.whatismyip.com/ 时,它显示我的 IP 为 109.175.XXX.X。
那么,为什么ruby变量总是显示127.0.0.1地址呢?如何获取真实IP?
编辑: 以下是以下输出:
request.env['HTTP_X_FORWARDED_FOR'] =>
request.remote_ip => 127.0.0.1
request.env['REMOTE_ADDR'] => 127.0.0.1
request.ip => 127.0.0.1
我以为问题出在我这边,但我将链接发送给我的 3 个朋友,他们都看到相同的 IP,只是 127.0.0.1。
我整天都在解决这个问题,但仍然没有成功。
谢谢
【问题讨论】:
-
也许你的应用在reverse proxy后面?
-
“访问者”如何访问您的服务器?当您使用 EC2 实例时,如何将请求发送到服务器?
-
简单地说,我已经在浏览器中打开了我的网站并重新加载了页面,因为我想在那里看到更改后的 IP - 但仍然与 localhost 上的相同 - 127.0.0.1
-
@Afsane.F 您可能会更幸运地打开一个新问题并提供尽可能多的细节。缩小问题范围并提供更多详细信息和数据会很有帮助。
标签: ruby-on-rails ruby request ip