59 Stimmen

Wie man die Client-IP und Server-IP mit Rails ermittelt

Kann jemand bitte helfen, wie man Client-IP und auch Server-IP mit Ruby on Rails erhalten?

85voto

karim79 Punkte 333786

Von Ihrem Controller aus:

request.remote_ip

Wenn Sie apache vor einem mongrel verwenden, dann gibt remote_ip die Quelladresse der Anfrage zurück, die in diesem Fall der lokale Host ist, da der Apache-Webserver die Anfrage stellt, also setzen Sie dies stattdessen in Ihren Controller:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Um die Server-IP zu erhalten, siehe:

Den Hostnamen oder die IP in Ruby on Rails ermitteln

0 Stimmen

Das funktioniert, aber ich brauche sowohl die Client-IP als auch die Server-IP zusammen.

0 Stimmen

Das liegt daran, dass Ihr Server die Anfrage an den Rails-Server weiterleitet. Sie müssen Ihren Frontserver (Apache oder was auch immer Sie haben) so einrichten, dass er auch die IP der ursprünglichen Anfrage sendet. Können Sie mehr Details über die Konfiguration geben, die Sie haben?

35voto

Danke: karim79 und Titanous.

Schreiben Sie den Code in Controller

Für Client IP:

request.remote_ip

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Für Server 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X