Как получить IP-адрес клиента и сервера с помощью Rails - PullRequest
59 голосов
/ 04 августа 2009

Может кто-нибудь помочь, как получить IP-адрес клиента, а также IP-адрес сервера, используя Ruby on Rails?

Ответы [ 2 ]

85 голосов
/ 04 августа 2009

с вашего контроллера:

request.remote_ip

Если вы используете apache перед монгрелом, то remote_ip вернет исходный адрес запроса, который в этом случае будет локальным хостом, потому что веб-сервер Apache делает запрос, поэтому вместо этого поместите его в свой контроллер :

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Чтобы узнать IP сервера, см .:

Получение имени хоста или IP в Ruby on Rails

35 голосов
/ 04 августа 2009

Спасибо: Карим79 и Титаноус.

Введите код в контроллер

Для 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
...