NGINX como proxy transparente

En este artículo, exploraremos cómo configurar NGINX como proxy transparente en un servidor Debian. Esta configuración permite que NGINX actúe como intermediario entre los clientes y el servidor Apache, redirigiendo las solicitudes sin que los usuarios tengan que realizar configuraciones adicionales en sus navegadores. A lo largo del proceso, aprenderás qué es un proxy, cómo funciona un proxy transparente y cómo implementarlo.
Tabla de contenidos
¿Qué es un Proxy?
Un proxy es un servidor o aplicación que actúa como intermediario entre un cliente y otro servidor. Este se utiliza para mejorar la seguridad, la velocidad y la privacidad de las conexiones. Existen varios tipos de proxy:
- Proxy de acceso a Internet: Proporciona acceso a Internet a los dispositivos de una red.
- Proxy de caché: Almacena copias de recursos para accesos más rápidos en el futuro.
- Proxy de anonimato: Oculta la dirección IP del cliente para proteger su identidad.
- Proxy inverso: Gestiona las solicitudes de los clientes y las redirige a un servidor web.
- Proxy transparente: Redirige las solicitudes sin requerir configuraciones adicionales por parte del cliente.
¿Qué es un Proxy Transparente?
Un proxy transparente es un tipo de proxy que intercepta las conexiones entrantes y las redirige automáticamente al servidor de destino. Es ideal para entornos donde no se desea configurar manualmente los dispositivos cliente. Sin embargo, no proporciona anonimato, ya que el administrador del proxy puede seguir viendo la información del cliente.
Un uso típico de los proxies transparentes es en redes empresariales para filtrar tráfico o acelerar el acceso a ciertos sitios web.
Situación Inicial
Imagina que tienes un servidor Apache configurado en un sistema Debian, que responde al dominio enguillem.com. Actualmente, este servidor funciona correctamente utilizando el puerto 80, con la siguiente configuración básica en el archivo enguillem.conf:
<VirtualHost *:80>
ServerName enguillem.com
ServerAlias www.enguillem.com
DocumentRoot /home/guillem/public_html/enguillem.com/www
</VirtualHost>
Nuestro objetivo será introducir NGINX como proxy transparente, redirigiendo las solicitudes entrantes al puerto 80 hacia Apache, que ahora escuchará en el puerto 8080.
Paso 1: Modificar Apache para Escuchar en el Puerto 8080
Editar el archivo ports.conf
: Cambia la configuración para que Apache escuche en el puerto 8080.
Listen 8080
Actualizar el archivo enguillem.conf
: Modifica el virtual host para reflejar el nuevo puerto.
<VirtualHost *:8080>
ServerName enguillem.com
ServerAlias www.enguillem.com
DocumentRoot /home/guillem/public_html/enguillem.com/www
</VirtualHost>
Reiniciar apache
sudo systemctl restart apache2
Ahora, podrás acceder a tu sitio utilizando la URL http://enguillem.com:8080
. Sin embargo, queremos que los usuarios accedan sin especificar el puerto, y aquí es donde entra NGINX.
Paso 2: Instalar NGINX en Debian
Instala NGINX con el siguiente comando:
sudo apt install nginx
Paso 3: Configurar NGINX como Proxy Transparente
Crear un archivo de configuración para NGINX: Navega al directorio /etc/nginx/sites-available
y crea un archivo llamado enguillem.com
con el siguiente contenido:
server {
listen 80;
listen [::]:80;
server_name enguillem.com www.enguillem.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Habilitar la configuración: Crea un enlace simbólico en el directorio /etc/nginx/sites-enabled
.
sudo ln -s /etc/nginx/sites-available/enguillem.com /etc/nginx/sites-enabled/
Reiniciar nginx
sudo systemctl restart nginx
Con esto, NGINX comenzará a actuar como proxy, redirigiendo las solicitudes entrantes al puerto 8080 donde Apache está sirviendo el contenido.
Conclusión
Has configurado con éxito NGINX como proxy transparente en tu servidor Debian. Este enfoque permite una transición fluida entre NGINX y Apache, mejorando el manejo de las solicitudes mientras los usuarios siguen accediendo a tu sitio de manera habitual. Si este tutorial te ha resultado útil, ¡no olvides compartirlo, dejar un comentario y suscribirte para más contenido como este!