Saltar al contenido

Cómo configurar REMOTE_ADDR en apache antes de que se invoque php

Posterior a de una prolongada selección de datos solucionamos este enigma que pueden tener ciertos los usuarios. Te compartimos la solución y nuestro objetivo es que resulte de gran ayuda.

Solución:

No estoy seguro de si REMOTE_ADDR se puede cambiar asi…

En realidad, es posible que deba instalar/habilitar otro módulo de Apache, como mod_rpaf(citando) :

Cambia la dirección remota del cliente visible para otros módulos de Apache cuando se cumplen dos condiciones.

La primera condición es que el cliente remoto sea en realidad un proxy definido en httpd.conf.
En segundo lugar, si hay un encabezado X-Forwarded-For entrante y el proxy está en su lista de proxies conocidos, toma la última IP del encabezado X-Forwarded-For entrante y cambia la dirección remota del cliente en la estructura de solicitud.
También toma el encabezado X-Host entrante y actualiza la configuración del host virtual en consecuencia.

Para Apache2 mod_proxy, toma el encabezado X-Forwared-Host y actualiza los hosts virtuales

Aquí hay una publicación de blog sobre eso: Nginx proxy to Apache: acceda a la dirección IP del host remoto usando mod_praf

Actualización: el enlace original no funciona en este momento, pero también está disponible como un paquete de Debian: apt-get install libapache2-mod-rpaf

He resuelto esto usando mod_remoteip para Apache. mod_remoteip es para Apache 2.5 pero gracias a este chico también puedes usarlo en Apache 2.2.x.

Descargue mod_remoteip.c de https://gist.github.com/1042237 y compílelo con

apxs -i -a -c mod_remoteip.c

Esto debería crear una copia de mod_remoteip.so en el directorio de módulos. apxs también agregará la directiva LoadModule en su httpd.conf para el módulo recién creado.

Abra httpd.conf y compruebe si existe la directiva LoadModule para mod_remoteip

LoadModule remoteip_module    modules/mod_remoteip.so

Agregue la directiva RemoteIPHeader en httpd.conf

RemoteIPHeader X-Forwarded-For

Esta directiva le indicará a mod_remoteip que use el valor X-Forwarded-For de nginx como remote_addr. También puede usar X-Real-IP en su lugar:

RemoteIPHeader X-Real-IP

Reinicie Apache. Si ha configurado los encabezados de proxy en nginx, funcionará a la perfección y remote_addr en Apache será correcto

# nginx conf    
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Apache (requiere el módulo mod_headers):

SetEnvIf X-Real-IP "^(d1,3+.d1,3+.d1,3+.d1,3+).*" XFF_CLIENT_IP=$1
RequestHeader set REMOTE_ADDR %XFF_CLIENT_IPe

REF para SetEnvIf RegEx: https://stackoverflow.com/a/10346093

También funciona pero no verifica la entrada como IP:

SetEnvIf X-Real-IP "^(.*)" XFF_CLIENT_IP=$1
RequestHeader set REMOTE_ADDR %XFF_CLIENT_IPe

En PHP:

$_SERVER["HTTP_REMOTE_ADDR"]

-o-

$_SERVER["REMOTE_ADDR"]

No se requieren módulos Apache no centrales

Puntuaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *