Quiero preguntar, pero tal vez esta pregunta sea un duplicado. Lamento que todas las respuestas a las otras preguntas no hayan funcionado en mi caso.
Tengo un servidor apache como webserver ejecutando php+7.4 con configuración por defecto y certbot como SSL con IP pública 192.168.1.11, quiero recuperar la IP del cliente que abre mi web, por ejemplo el dominio news.test.com. El dominio test.com en sí tiene una dirección IP pública, por ejemplo, 123.100.1.10. ¿Cómo obtengo la IP del cliente que abre el dominio news.test.com?
Ya hago esto para obtener IP
public static function get_ip() { $mainIp = ''; if (getenv('HTTP_CLIENT_IP')) $mainIp = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $mainIp = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $mainIp = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $mainIp = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $mainIp = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $mainIp = getenv('REMOTE_ADDR'); else $mainIp = 'UNKNOWN'; return $mainIp; }El problema que obtuve no fue el cliente IP que obtuve, sino que obtuve la IP del dominio test.com. Intenté otra conexión a Internet e hice una prueba de IP pública, pero aún obtengo la IP de test.com, no la IP del cliente. ¿Se debe a que la configuración de mi dominio principal o de mi apache está en la configuración incorrecta? o hay un error u otra forma de obtener la IP del cliente.?
Inténtalo con HTTP_CF_CONNECTING_IP
public static function get_ip() { $mainIp = ''; if (getenv('HTTP_CF_CONNECTING_IP')) $mainIp = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $mainIp = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $mainIp = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $mainIp = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $mainIp = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $mainIp = getenv('REMOTE_ADDR'); else $mainIp = 'UNKNOWN'; return $mainIp; }