Как получить IP-адрес клиента и IP-адрес сервера с помощью Rails

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

Ответ 1

Thanks: karim79 and Titanous

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

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

Ответ 2

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

request.remote_ip

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

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Чтобы получить IP-адрес сервера, выполните следующие действия:

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