Rails: Obtener la dirección IP del cliente


En Rails, ¿cuál es la mejor manera de obtener la dirección ip del cliente que se conecta al servidor?

Aquí hay dos maneras que he encontrado:

request.remote_ip
request.env['HTTP_X_REAL_IP']
Author: bryanbraun, 2010-12-17

5 answers

Solo usaría el request.remote_ip que es simple y funciona. ¿Alguna razón por la que necesites otro método?

Ver: Obtener la dirección IP real en el entorno de desarrollo local de Rails para algunas otras cosas que puede hacer con ip del servidor del cliente.

 276
Author: loosecannon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:01

request.remote_ip es una interpretación de toda la información de la dirección IP disponible y hará una mejor conjetura. Si accede a las variables directamente, asume la responsabilidad de probarlas en el orden de precedencia correcto. Los proxies introducen una serie de encabezados que crean variables de entorno con diferentes nombres.

 37
Author: tadman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-18 18:36:06

Obtener la ip del cliente usando el comando:

request.remote_ip
 5
Author: puneet18,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-11 06:51:56

Para cualquier persona interesada y usando un rails más nuevo y la gema Devise: La opción "trackable" de Devise incluye una columna para current/last_sign_in_ip en la tabla users.

 1
Author: Nathan Pierce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-08 00:07:12

Encontré request.env['HTTP_X_FORWARDED_FOR'] muy útil también en los casos en que request.remote_ip devuelve 127.0.0.1

 0
Author: alikk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-01 18:33:56