Tengo un servidor web detrás de un equilibrador de carga.
Necesito agregar una redirección condicional a mi .htaccess para mostrar una página de mantenimiento cada vez que desconectamos el sitio por mantenimiento. Esta parte es sencilla:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Sin embargo, quiero agregar en una condición que si la dirección IP del visitante es la mía, no me redirigirá a la página de mantenimiento y que podría ver y probar el sitio como si estuviera en línea. Esta parte normalmente también es sencilla:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Sin embargo, debido a que mi servidor web está detrás de un equilibrador de carga, REMOTE_ADDR
se resuelve en la dirección IP interna del servidor de equilibrio de carga.
¿Cómo puedo modificar esto para buscar la dirección IP reenviada? Sé que en PHP puedes usar $_SERVER['HTTP_X_FORWARDED_FOR']
para obtener la dirección IP reenviada. He intentado algunas cosas en el .htaccess
pero no tuve suerte:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
SOLUCIÓN
Tengo lo siguiente para trabajar:
%{HTTP:X-FORWARDED-FOR}
.jpe
o.jp
archivos?Respuestas:
Usar en
%{HTTP:X-FORWARDED-FOR}
lugar de%{REMOTE_ADDR}
fuente
Necesitas mod_rpaf . Este módulo reescribirá REMOTE_ADDR en apache con otro encabezado, como x-forwards-for. Muy útil para hacer que las aplicaciones PHP se comporten con equilibradores de carga.
fuente
http://blog.janjonas.net/2010-01-04/apaches-mod_rewrite-mod_proxy-use-reverse-proxy-request-headers-for-rewrite-rules
¿Podría ser esta la respuesta?
fuente
Si tiene dos entornos, digamos una producción detrás del equilibrio de carga y un desarrollo o puesta en escena no detrás del equilibrio de carga, y desea utilizar el mismo archivo .htaccess, necesitará tanto% {HTTP: X-FORWARDED-FOR} como % {REMOTE_ADDR}: asigna direcciones IP a ambas condiciones.
fuente