Guía paso a paso para configurar un Proxy Inverso con Apache

Artículos Guías Manuales Sistemas Linux Windows Binario 0

El proxy inverso es una técnica comúnmente utilizada para distribuir tráfico entre varios servidores y proteger la infraestructura interna de una red. Apache HTTP Server puede actuar como un proxy inverso para redirigir las solicitudes entrantes a uno o varios servidores backend. A continuación, te ofrezco una guía detallada con ejemplos de configuración.

Requisitos previos

  1. Servidor Apache instalado: Asegúrate de tener Apache HTTP Server instalado en tu sistema.
  2. Módulos de proxy habilitados: Necesitas habilitar los módulos necesarios en Apache para configurar el proxy inverso.

Paso 1: Instalación de Apache

Si no tienes Apache instalado, puedes instalarlo usando el siguiente comando:

  • En Debian/Ubuntu

    sudo apt update
    sudo apt install apache2
  • En CentOS/RHEL:

    sudo yum install httpd

Paso 2: Habilitar los módulos de proxy

Apache necesita los módulos proxy, proxy_http, proxy_balancer y lbmethod_byrequests habilitados para funcionar como un proxy inverso.

  • En Debian/Ubuntu:

    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo a2enmod proxy_balancer
    sudo a2enmod lbmethod_byrequests
    sudo systemctl restart apache2
  • En CentOS/RHEL, edita el archivo de configuración principal de Apache (generalmente ubicado en /etc/httpd/conf/httpd.conf) y añade las siguientes líneas:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

Luego reinicia Apache:

sudo systemctl restart httpd

Paso 3: Configuración del Proxy Inverso

Edita el archivo de configuración del sitio en Apache. Por lo general, este archivo se encuentra en /etc/apache2/sites-available/000-default.conf en Debian/Ubuntu o en /etc/httpd/conf.d/proxy.conf en CentOS/RHEL.

Agrega la siguiente configuración para redirigir las solicitudes a un servidor backend:

<VirtualHost *:80>
ServerName www.ejemplo.com

# Configuración de Proxy Inverso
ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Require all granted
</Proxy>

ProxyPass / http://backend.ejemplo.com/
ProxyPassReverse / http://backend.ejemplo.com/

# Log de errores
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Paso 4: Habilitar el sitio y reiniciar Apache

En Debian/Ubuntu, asegúrate de que el sitio esté habilitado:

sudo a2ensite 000-default.conf
sudo systemctl restart apache2

En CentOS/RHEL, no es necesario habilitar el sitio específicamente, pero asegúrate de reiniciar Apache para aplicar los cambios:

sudo systemctl restart httpd

Paso 5: Verificación

Verifica que la configuración del proxy inverso esté funcionando correctamente. Abre un navegador web y navega a http://www.ejemplo.com. Deberías ver el contenido del servidor backend.

Ejemplo completo de configuración

A continuación, un ejemplo completo de un archivo de configuración para un sitio en Debian/Ubuntu:

<VirtualHost *:80>
ServerName www.ejemplo.com

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Require all granted
</Proxy>

ProxyPass / http://backend.ejemplo.com/
ProxyPassReverse / http://backend.ejemplo.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Archivos de ejemplo

  1. Archivo de configuración en /etc/apache2/sites-available/000-default.conf para Debian/Ubuntu:
<VirtualHost *:80>
ServerName www.ejemplo.com

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Require all granted
</Proxy>

ProxyPass / http://backend.ejemplo.com/
ProxyPassReverse / http://backend.ejemplo.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  1. Archivo de configuración en /etc/httpd/conf.d/proxy.conf para CentOS/RHEL:
<VirtualHost *:80>
ServerName www.ejemplo.com

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Require all granted
</Proxy>

ProxyPass / http://backend.ejemplo.com/
ProxyPassReverse / http://backend.ejemplo.com/

ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined
</VirtualHost>

Con esta guía, deberías poder configurar un proxy inverso utilizando Apache HTTP Server. Si encuentras algún problema, asegúrate de revisar los archivos de log de Apache para obtener más información sobre posibles errores.