2009-08-04 17 views

Respuesta

35

Gracias: karim79 y Titanous.

escribir el código en el controlador de

Para IP del cliente:

request.remote_ip 

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"] 

Para IP del servidor:

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 
+0

¿Qué es el servidor ip? ¿Es el servidor de los clientes? –

+0

¿dónde se definió el objeto de solicitud? – user938363

+2

Rails proporciona el objeto de solicitud al método de acción del controlador durante el tiempo de ejecución (cuando se realiza una solicitud del navegador). – thekingoftruth

84

Desde su controlador:

request.remote_ip 

Si está utilizando Apache frente a un mestizo, a continuación, remote_ip devolverá la dirección de origen de la solicitud, que en este caso será anfitrión local porque el servidor web Apache se hace la solicitud, así que en vez poner esto en su controlador:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"] 

Para obtener la dirección IP del servidor ver:

Getting the Hostname or IP in Ruby on Rails

+0

Esto está trabajando pero necesito tanto cliente IP y el servidor IP juntos –

+0

Esto se debe a que su servidor está transmitiendo la solicitud al servidor de rieles. Debe configurar su servidor frontal (apache, o lo que sea que tenga) para enviar también la IP de la solicitud original. ¿Puedes dar más detalles sobre la configuración que tienes? –

+0

Gracias Buen compañero de trabajo está funcionando –

Cuestiones relacionadas