Cómo activar la compresión Brotli en Apache

GuíasApacheAplicacionesServidoresTipos de aplicación

En este artículo vamos a ver cómo utilizar el método de compresión Brotli con servidores Apache. El método de compresión Brotli es una alternativa mejorada y más segura que los métodos gzip/deflate. La librería Brotli, creada por Google, comprime los archivos en el servidor antes de que éstos sean enviados al navegador del usuario.

Por qué utilizar Brotli en Apache

El algoritmo que usa Brotli es más eficiente a la hora de comprimir archivos que otros métodos de compresión. Brotli usa un diccionario de palabras, de modo que las comprime guardando únicamente sus referencias. Debido a esto, este método de compresión es más eficiente con archivos de texto como pueden ser archivos HTML, CSS o JS, siendo aquí en donde más se notan las mejoras. En general, puedes esperar que los archivos ocupen entre un 15% y un 25% menos.

Si quieres saber más cosas acerca de Brotli, puedes consultar este artículo. También puedes encontrar la librería de Brotli en GitHub. Dicho esto, vamos a ver cómo instar Brotli y cómo configurarlo con Apache.

Cómo instalar Brotli en Apache

Antes de comenzar la instalación, debes asegurarte de que tienes instalado el servidor Apache en tu sistema. También debes tener Git instalado en tu sistema. Si no sabes cómo instalar Git, consulta la guía de instalación de Git. Para instalar Brotli, sigue estos pasos:

  1. Lo primero que debes hacer es descargar e instalar Brotli en tu sistema. Puedes hacerlo con apt, con yum o  clonando el repositorio con Git:
    • Si vas a utilizar el gestor de paquetes apt (Fedora/CentOS), ejecuta este comando:
      apt-get install brotli
    • Si vas a utilizar el gestor de paquetes yum (Defora/RHEL/CentOS), ejecuta este comando:
      yum install brotli
    • Si prefieres clonar el repositorio de Git, usa estos comando:
      yum install pcre-devel cmake -y
      cd /usr/local/src
      git clone https://github.com/google/brotli.git
      cd brotli

      Seguidamente, haz un checkout de la última versión estable de Brotli. Puedes ver un listado de todas las versiones disponibles con el comando git branch:

      git branch

      En este ejemplo instalaremos la versión 1.0 de Brotli. Haz un checkout de esta versión:

      git checkout v1.0

      Ahora debes compilar la librería con el comando make:

      ./configure-cmake
      make && make install
  2. Una vez hayas instalado Brotli, tienes que descargarte y compilar el módulo para Apache. Lo primero que debes hacer es descargarte el módulo Apache-dev:
    • Para Fedora/RHEL/CentOS, usa el comando yum:
      yum install apache2-dev
    • En Debian/Ubuntu, usa apt-get:
      apt-get install apache2-dev

    Con esto se instalarán varias utilidades que necesitarás para compilar el módulo.

  3. Ahora debes clonar el módulo desde GitHub y compilarlo con estos comandos:
    git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git
    cd apache-mod-brotli
    ./autogen.sh
    ./configure
    make
  4. El archivo .so estará en el interior del directorio .libs. Mueve el módulo al directorio de  librerías de Apache con uno de los siguientes comandos. Si el directorio de módulos de Apache está en el directorio /usr/lib/apache2/modules/, usa este comando:
    install -D .libs/mod_brotli.so /usr/lib/apache2/modules/mod_brotli.so -m 644

    Si el directorio de módulos de Apache está en el directorio /usr/lib64/httpd/modules/, usa este comando:

    install -D .libs/mod_brotli.so /usr/lib64/httpd/modules/mod_brotli.so -m 644

    Si el directorio donde están los módulos está en otro directorio, consulta en dónde están y mueve el módulo a dicho directorio:

    install -D .libs/mod_brotli.so /ruta/hasta/el/directorio/mod_brotli.so -m 644
  5. Ahora que has compilado y situado el módulo en donde corresponde, es hora de activarlo. En las versiones más recientes de Apache podrás utilizar la aplicación a2enmod para activar módulos y la aplicación a2dismod para desactivarlos. Sin embargo, debes crear primero un archivo .load que contenga la información del módulo:
    cd /etc/apache2/mods-available
    echo "LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so" > brotli.load

    Con estos comandos, se habrá agregado el módulo a un archivo de nombre brotli.load.

  6. Lo siguiente que debes hacer es crear un archivo de configuración de Brotli. Dependiendo de la localización de Apache en tu sistema, tendrás que ejecutar crear el archivo brotli.conf en uno u otro directorio. Usaremos el editor nano, pero puedes usar cualquier otro editor como vim, por ejemplo. Si Apache está en el directorio /usr/local/apache, usa este comando:
    nano /usr/local/apache/conf.d/brotli.conf

    Si Apache está en el directorio /etc/httpd, usa este comando:

    nano /etc/httpd/conf.d/brotli.conf
  7. En el interior del archivo, copia y pega el siguiente código:
    <IfModule brotli_module>
      # Compresion
      ## BrotliCompressionLevel: 0-11 (default: 11)
      BrotliCompressionLevel 10
      ## BrotliWindowSize: 10-24 (default: 22)
      BrotliWindowSize 22
    
    
      # Logs
      BrotliFilterNote Input  brotli_in
      BrotliFilterNote Output brotli_out
      BrotliFilterNote Ratio  brotli_ratio
    
    
      #LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli
      #CustomLog ${APACHE_LOG_DIR}/brotli_access.log brotli
    
    
      # Tipos de archivo
      AddOutputFilterByType BROTLI text/html text/plain text/css text/xml
      AddOutputFilterByType BROTLI text/css
      AddOutputFilterByType BROTLI application/x-javascript application/javascript
      AddOutputFilterByType BROTLI application/rss+xml
      AddOutputFilterByType BROTLI application/xml
      AddOutputFilterByType BROTLI application/json
    
    </IfModule>
  8. Podrás establecer el nivel de compresión de Brotli cambiando el valor de la opción BrotliCompressionLevel, con un valor que va de 1 a 11. Los desarrolladores del módulo recomiendan establecer un valor de entre 9  y 10. Puedes encontrar más información acerca de los rangos óptimo de compresión en este enlace. También podrás habilitar un log y, mediante las opciones AddOutputFilterByType, podrás seleccionar aquellos tipos de archivo que se comprimirán con Brotli.

Una vez instalado y configurado el módulo, todavía tienes que activarlo.

Cómo instalar Brotli en Apache

Para aplicar la configuración de Brotli en Apache, debes ejecutar el siguiente comando y reiniciar Apache:

a2enmod brotli
service apache2 restart

Puedes comprobar si Brotli está funcionando inspeccionando las cabeceras de las peticiones, asegurándote de que la cabecera de nombre Accept-encoding incluye el valor br. Las cabeceras de las respuestas también deberían incluir el valor br en el campo Content-encoding.

Esto ha sido todo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *