Instalando NGINX con soporte de compresión Brotli

By on
Ejecución de un sitio web

No puedo disimular mi emoción hoy al hablaros de uno de los paquetes de software que más despiertan mi admiración desde que lo conozco y utilizo, NGiNX. Atrás quedaron proyectos como Lighttpd o Cherokee Web Server, utilizados como sustitutos de Apache en proyectos donde primaba el mínimo consumo de recursos y el máximo rendimiento.

NGiNX, pronunciado ‘enllin-ex’, es un servidor web y proxy inverso ligero y multiplataforma de gran desempeño que también puede utilizarse como proxy de protocolos de correo electrónico (IMAP/POP3). Creado por el ruso Igor Sysoev en 2004, actualmente son infinidad de sitios conocidos quienes lo utilizan, Netflix o Github entre ellos.

Recientemente NGINX+, el producto comercial derivado de este proyecto Open Source con licencia BSD, ha sido adquirido por una de las marcas de más renombre en el mundo del networking y aplicaciones web, F5 Networks. Esta marca es mundialmente famosa por sus soluciones de balanceo de carga BIG-IP y también, por qué no decirlo, por el coste de sus ‘appliances’.

Dejando atrás un poco las marcas y productos, hoy voy a hablaros sobre cómo integrar el algoritmo de compresión Brotli, creado por Google, dentro de NGiNX de forma fácil y rápida. Pero antes, hablemos de Brotli.

Brotli es un algoritmo de compresión de datos que ofrece velocidades similares o incluso menores que *gzip* pero con una densidad de compresión mucho mayor. Y es especialmente reseñable esta diferencia cuando se trata de texto. Un documento javascript o css es entre un 15% y un 20% más pequeño utilizando Brotli que gzip. Más información acerca de las bondades de este algoritmo aquí, aquí y aquí. Y si tienes mucho tiempo libre e inquietudes variopintas como yo, puedes encontrar aquí las especificaciones del formato y su repositorio en Github.

Bueno, manos a la obra. Partimos de una máquina Debian 9 versión 64bits en la que instalaremos las dependencias necesarias para poder descargar y compilar el proyecto nginx-ee, un conjunto de scripts que nos automatizará la tarea de compilar el servidor web NGiNX con soporte Brotli y algún otro módulo que nos será de gran utilidad.

Instalaremos git para descargar el repositorio del proyecto:

Descargamos desde el repositorio del proyecto:

Lanzamos la compilación en modo interactivo. Nos permitirá seleccionar qué modulos incluir dentro de NGiNX y qué versión usaremos del servidor web:

Comprobamos que NGiNX está corriendo:

Y que está compilado con el soporte de Brotli, Pagespeed o RMTP, entre otros módulos:

Aquí podemos ver la captura de los headers de una petición servida con esta solución, los resaltados incluyen la codificación del contenido ‘br’ y el servidor ‘nginx’ que la sirve:

Captura de los headers de una petición servida con esta solución, los resaltados incluyen la codificación del contenido 'br' y el servidor 'nginx' que la sirve