59

谁能帮助如何使用 Ruby on Rails 获取客户端 IP 和服务器 IP?

4

2 回答 2

85

从您的控制器:

request.remote_ip

如果你在一个 mongrel 前面使用 apache,那么 remote_ip 将返回请求的源地址,在这种情况下它将是本地主机,因为 Apache Web 服务器正在发出请求,所以把它放在你的控制器中:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

要获取服务器 IP,请参见:

在 Ruby on Rails 中获取主机名或 IP

于 2009-08-04T11:34:32.150 回答
35

谢谢:karim79 和 Titanous。

在Controller中编写代码

对于客户端 IP:

request.remote_ip

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

对于服务器 IP:

require 'socket'

def local_ip
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true  # turn off reverse DNS resolution temporarily

  UDPSocket.open do |s|
    s.connect '64.233.187.99', 1
    s.addr.last
  end
ensure
  Socket.do_not_reverse_lookup = orig
end
于 2009-08-04T11:49:19.563 回答