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?