Que bueno volver a ver notas tecnicas!
Gracias!
Mini Tip: X Forwarded For en HTTP
Es un pequeño detalle pero sucede muy a menudo cuando estás detrás de un servidor proxy en tu web server: no tenés idea qué IP tiene el cliente.
La razón de esto es que el proxy toma esa posición que resulta ser tu propio servidor, así que todos los clientes terminan entrando con el supuesto mismo IP o así lo asume el Apache.
En PHP la variable de servidor que toma mal este valor es REMOTE_ADDR y el problema es que si tenés algún filtro o método que requiere saber específicamente a qué cliente le estás afectando no podrías hacerlo.
Peero, existe una solución, una variable que se incluyó primero en Squid es HTTP_X_FORWARDED_FOR para que uno tenga forma de saber cual fue el origen verdadero. Si esta variable tiene valores significa que estamos detrás de un proxy, por ejemplo NGINX, y para conocer la IP real vamos a tener que reemplazar con estas pocas líneas de código:
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$http_x_headers = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}
Y listo, ahora REMOTE_ADDR tiene el valor correcto.
Otros posts que podrían llegar a gustarte...