IPinfoBox

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