Cómo redirigir tráfico en Nginx según la IP del visitante

Dificultad: Fácil
<b>Tiempo de Lectura:</b> 2 minutos

Dependiendo de las necesidades, muchas veces los desarrolladores necesitan redirigir parte de su tráfico hacia otras áreas de su web, o incluso hacia otras URLs fuera del sitio en si. En este post veremos cómo redirigir via Nginx a tus visitantes de una URL a otra en base a la IP que tengan.

Redirección de tráfico en Nginx usando HttpAccessModule

Nginx soporta el uso de condiciones en su configuración, por lo que haremos uso del módulo HttpAccessModule usando un if contra la IP que se asigna en la variable $remote_addr:

server {
if ($remote_addr = 2.3.4.5) {
rewrite ^ http://www.infranetworking.com/otrapagina.html;
}
}

En este ejemplo la IP 2.3.4.5 es la IP que vamos a redirigir hacia la URL deseada.

Redirección con Nginx como proxy Apache

Si usas Nginx como proxy de Apache, lo que debes hacer es redirigir el tráfico hacia los servidores que están detrás usndo proxy_pass, ejemplo:

if ( $remote_addr = 2.3.4.5 ) {
proxy_pass http://www.infranetworking.com/otrapagina.html;
}

Este tipo de redirecciones se pueden aplicar fácilmente en casos donde necesitas mostrar mensajes de mantenimiento para tus clientes o compañeros de trabajo. O bien para proteger áreas con información sensible donde sólo la IP de tu oficina puede estar permitida (aunque esto también se puede lograr con directivas allow/deny).

¿Qué otras opciones hay para redirigir tráfico con Nginx?

Otra alternativa muy usada es recurrir al módulo GeoIP de Nginx. Este módulo te ayuda (junto al módulo GeoIP de sistema) a definir variables dependiendo de la IP visitante, ejemplo:

geo $usuario_denegado {
default 0;
2.3.4.5/32 1;
}

server {
if ($usuario_denegado) {
rewrite ^ http://www.infranetworking.com/otrapagina.html;
}

En el ejemplo 0 (cero)  es el valor asignado a la variable si la IP del cliente no es igual a ninguna de las especificadas (2.3.4.5/32).

Conclusión

Como vimos, las redirecciones en Nginx son bastante fáciles de usar, en Infranetworking las aplicamos en los Cloud VPS de nuestros clientes a diario y siempre con excelentes resultados, sea con Nginx como único server, o bien usándolo como proxy frente a Apache.

Cuéntanos: ¿Cuál es tu experiencia creando redirecciones en Nginx? ¿Utilizas estos u otros  métodos?


¿Te resultó útil el artículo? Compártelo con tus colegas: