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

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

Configurar un proxy inverso con Apache para manejar solicitudes HTTPS implica unos pocos pasos adicionales en comparación con HTTP. Estos incluyen la configuración de certificados SSL. 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.
  3. Certificados SSL: Necesitas tener un certificado SSL y su clave privada.

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 y SSL

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

  • En Debian/Ubuntu:

    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo a2enmod proxy_balancer
    sudo a2enmod lbmethod_byrequests
    sudo a2enmod ssl
    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
    LoadModule ssl_module modules/mod_ssl.so

Luego reinicia Apache:

sudo systemctl restart httpd

Paso 3: Configuración del Proxy Inverso con HTTPS

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

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

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

SSLEngine on
SSLCertificateFile /ruta/a/tu_certificado.crt
SSLCertificateKeyFile /ruta/a/tu_llave_privada.key
SSLCertificateChainFile /ruta/a/tu_cadena_certificados.crt

# 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-le-ssl.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 https://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 *:443>
ServerName www.ejemplo.com

SSLEngine on
SSLCertificateFile /etc/ssl/certs/ejemplo.com.crt
SSLCertificateKeyFile /etc/ssl/private/ejemplo.com.key
SSLCertificateChainFile /etc/ssl/certs/chain.crt

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/ssl.conf para CentOS/RHEL:
<VirtualHost *:443>
ServerName www.ejemplo.com

SSLEngine on
SSLCertificateFile /etc/ssl/certs/ejemplo.com.crt
SSLCertificateKeyFile /etc/ssl/private/ejemplo.com.key
SSLCertificateChainFile /etc/ssl/certs/chain.crt

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 con soporte para HTTPS. Si encuentras algún problema, asegúrate de revisar los archivos de log de Apache para obtener más información sobre posibles errores.