IP real del visitante detrás de Cloudflare o un balanceador
Cómo un servidor detrás de un proxy puede obtener de forma segura la IP real del visitante, con Nginx, Node.js y PHP.
Por qué la IP se ve distinta
Cuando Cloudflare, un balanceador de carga o Nginx está delante de tu sitio, las conexiones que recibe tu servidor vienen de ese proxy, así que ves la IP del proxy en lugar de la del visitante. La IP del visitante está en un encabezado que añade el proxy.
Cloudflare
Cloudflare pone una única IP de visitante en el encabezado CF-Connecting-IP. Para asegurarte de que una solicitud vino realmente de Cloudflare, confía en este encabezado solo cuando la IP de conexión esté dentro de los rangos de IP publicados por Cloudflare (cloudflare.com/ips).
X-Forwarded-For
Cuando una solicitud pasa por varios proxies, X-Forwarded-For acumula sus IP separadas por comas. El primer valor se considera el del visitante, pero el propio visitante puede escribirlo, así que cuenta hacia atrás desde el último valor que añadió tu propio proxy y usa el valor de una posición en la que puedas confiar.
Nginx
Con el módulo real_ip, indica los rangos de tus proxies en set_real_ip_from y configura real_ip_header como CF-Connecting-IP o X-Forwarded-For. A partir de ahí, tus registros y tu aplicación reciben la IP del visitante.
Node.js y PHP
En Express, configura app.set("trust proxy", número de proxies) y req.ip pasará a ser la IP del visitante. En PHP, usa $_SERVER["HTTP_CF_CONNECTING_IP"] solo cuando $_SERVER["REMOTE_ADDR"] sea tu propio proxy.
Compruébalo
Después de configurarlo, si la IP que registra tu sitio coincide con la IP que muestra la página de inicio de IPinfoBox, funciona.
Consulta ahora tu IP y tu ubicación.
Consultar mi IP