Apache Reverse Proxy: configuración con el módulo mod_proxy

Al implementar un servidor proxy inverso como capa adicional de protección, puedes mejorar la robustez de tu aplicación web y reducir al mínimo el riesgo de ataques. El servidor HTTP Apache tiene muchos módulos y extensiones que admiten varias funciones de proxy. En este artículo, te explicamos paso a paso cómo instalar y configurar un proxy inverso de Apache.

¿Qué es mod_proxy?

Apache es un servidor web de código abierto muy conocido utilizado para ofrecer contenidos web en Internet. Está disponible en muchos sistemas operativos, como Windows, Linux y macOS, y puede ampliarse de forma flexible mediante plugins y módulos.

El módulo mod_proxy permite al servidor web Apache actuar como un proxy inverso reenviando las solicitudes a otro servidor y devolviendo la respuesta al cliente. Esto es muy útil cuando se tienen varios servidores web y se busca distribuir la carga entre ellos. De esta forma, se puede mejorar el rendimiento o construir una arquitectura de alta disponibilidad.

Apache mod_proxy está compuesto por varios módulos, cada uno con sus propias funcionalidades. Aquí tienes algunos de los módulos más importantes:

  • mod_proxy: proporciona la funcionalidad principal del proxy inverso y reenvía solicitudes a otro servidor.
  • mod_proxy_http: ofrece las funciones de proxy para los protocolos HTTP y HTTPS.
  • mod_proxy_ftp: ofrece las funciones de proxy para el protocolo FTP.
  • mod_proxy_connect: se utiliza para conexiones SSL encriptadas.
  • mod_proxy_ajp: se utiliza para reenviar solicitudes a servidores de aplicaciones compatibles con el AJP.
  • mod_proxy_wstunnel: se utiliza para WebSockets.
  • mod_proxy_balancer: ofrece funciones de balanceo de carga.
  • mod_cache: ofrece varios métodos de almacenamiento en caché.
  • mod_headers: se utiliza para la modificación de las líneas de cabecera HTTP.
  • mod_deflate: comprime las respuestas HTTP.
Consejo

El hosting de Linux de IONOS soporta una gran cantidad de módulos de Apache que te permiten configurar rápida y eficazmente tu propio servidor proxy inverso de Apache. También te ofrece un rendimiento escalable y flexible, protección contra ataques de denegación de servicio distribuido (DDoS) y las mejores capacidades y funcionalidades de PHP.

Configurar Apache Reverse Proxy: guía paso a paso

Vamos a suponer que ya tienes Apache instalado en tu sistema. Consulta cómo configurar un servidor web de Apache para obtener información más detallada.

Paso 1. Actualizar el índice de paquetes

Primero debes actualizar la lista de paquetes disponibles.

Introduce el siguiente comando en el terminal:

$ sudo aptitude update
shell

A continuación, actualiza los paquetes instalados en tu sistema:

$ sudo aptitude upgrade -y
shell

Paso 2. Descargar Essential Build Tools

A continuación, instalamos las Essential Build Tools, un conjunto de herramientas y bibliotecas necesarias para crear y compilar aplicaciones en Linux.

$ sudo aptitude install -y build-essential
shell

Paso 3. Instalar módulos y dependencias

Ahora podemos descargar e instalar los módulos y bibliotecas necesarios para el Apache Reverse Proxy.

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
shell

Paso 4. Activar los módulos

Antes de activar los módulos, es importante verificar que se han instalado correctamente. El siguiente comando te muestra una lista de los módulos que tienes disponibles:

$ a2enmod
shell
a2enmod ejecutado
Comando a2enmod en el terminal

Al ejecutar el comando a2enmod, deberás indicar qué módulos quieres instalar. Puedes enumerar los módulos que quieres en una sola línea:

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
shell

También puedes activar cada módulo individualmente:

$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod headers
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html
shell

Algunos módulos están activos de forma predeterminada, pero con a2enmod te aseguras de que verdaderamente estén habilitados.

Paso 5. Modificar la configuración predeterminada

Para implementar las funciones de proxy del servidor web Apache, debemos editar el archivo de configuración predeterminado. Se llama 000-default.conf y se encuentra en el directorio /etc/apache2/sites-enabled.

$ nano /etc/apache2/sites-enabled/000-default.conf
shell

Vamos a configurar un proxy host virtual utilizando los módulos mod_virtualhost y mod_proxy. Puedes ajustar el código conforme a tus necesidades.

    <VirtualHost *:*>
        ProxyPreserveHost On
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        ServerName localhost
    </VirtualHost>
shell

Pulsa Ctrl + X y Y para guardar los cambios y cerrar el editor de texto.

Paso 6. Configurar el balanceo de carga

Si estás utilizando varios servidores backend, te recomendamos distribuir la carga mediante el balanceo de carga.

Puedes utilizar el siguiente código como plantilla e introducirlo en el archivo de configuración predeterminado:

<Proxy balancer://mycluster>
        # Define back-end servers:
        # Server 1
        BalancerMember http://0.0.0.0:8080/
        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </Proxy>
    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load
        ProxyPass / balancer://mycluster
    </VirtualHost>
shell

Paso 7. Configurar el soporte SSL

Si quieres utilizar Apache SSL para conexiones cifradas y certificados, necesitas activar un segundo host virtual.

Listen 443
    NameVirtualHost *:443
    <VirtualHost *:443>
        SSLEngine On
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    </VirtualHost>
shell

Paso 8. Reiniciar Apache

Una vez hayas terminado de configurar, debes reiniciar el servidor web Apache para que se apliquen los cambios.

$ service apache2 restart
shell

Ahora, el Apache Reverse Proxy debería redirigir las solicitudes a tus servidores backend.

Consejo

Un servidor administrado de IONOS te ofrece una solución sencilla, escalable y segura para configurar un Apache Reverse Proxy. Con alta disponibilidad y flexibilidad, así como soporte profesional, puedes centrarte en tu negocio principal mientras IONOS se hace cargo del rendimiento y la seguridad de tu aplicación.