Cómo instalar Nginx con compresión Brotli en Ubuntu 20.04
Brotli es un algoritmo de compresión de código abierto creado por Google. Puede utilizarse como alternativa a Gzip, Zopfli y Deflate. Es un algoritmo de compresión sin pérdidas de uso genérico que comprime datos utilizando una combinación de una variante moderna del algoritmo LZ77 y la codificación Huffman. Comprime los datos entre un 10 y un 20 por ciento más que los algoritmos de compresión actuales.
Este tutorial te mostrará cómo instalar Brotli con Nginx en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Se ha configurado una contraseña de root en el servidor.
Cómo empezar
En primer lugar, se recomienda actualizar los paquetes del sistema a la última versión. Puedes actualizarlos todos ejecutando el siguiente comando:
apt-get update -y
Una vez actualizados todos los paquetes, puedes instalar otras dependencias ejecutando el siguiente comando:
apt-get install dpkg-dev curl gnupg2 build-essential zlib1g-dev libpcre3 libpcre3-dev unzip -y
Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.
Descargar Nginx y Brotli Source
Antes de descargar el código fuente de Nginx y Brotli, debes añadir el repositorio de Nginx a tu sistema.
Primero, descarga y añade la clave de Nginx con el siguiente comando:
curl -L https://nginx.org/keys/nginx_signing.key | apt-key add -
Una vez añadida la clave, añade el repositorio de Nginx con el siguiente comando:
nano /etc/apt/sources.list.d/nginx.list
Añade las siguientes líneas:
deb http://nginx.org/packages/ubuntu/ focal nginx deb-src http://nginx.org/packages/ubuntu/ focal nginx
Guarda y cierra el archivo cuando hayas terminado y luego actualiza el repositorio con el siguiente comando:
apt-get update -y
Una vez actualizado el repositorio, cambia el directorio a /usr/local/src y descarga el código fuente de Nginx con el siguiente comando:
cd /usr/local/src apt-get source nginx
A continuación, instala todas las dependencias necesarias para Nginx con el siguiente comando:
apt-get build-dep nginx -y
Una vez instaladas todas las dependencias, descarga la última versión del código fuente de Brotli del repositorio Git con el siguiente comando:
git clone --recursive https://github.com/google/ngx_brotli.git
A continuación, cambia el directorio a la fuente de Nginx y edita el archivo de reglas debian:
cd /usr/local/src/nginx-*/ nano debian/rules
Ahora tendrás dos entornos de compilación para ‘config.env.nginx’ y ‘config.env.nginx_debug’. Añade la opción ‘–add-module=’ para ngx_brotli a ambos entornos de compilación.
--add-module=/usr/local/src/ngx_brotli
Guarda y cierra el archivo cuando hayas terminado. Ahora, compila y construye el paquete nginx con soporte para ngx_brotli con el siguiente comando:
dpkg-buildpackage -b -uc -us
Una vez finalizada la compilación, obtendrás los paquetes nginx-*.deb en el directorio ‘/usr/local/src’ como se muestra a continuación.
ls -l /usr/local/src/*.deb
Deberías obtener la siguiente salida:
-rw-r--r-- 1 root root 1124244 Dec 2 06:30 /usr/local/src/nginx_1.18.0-2~focal_amd64.deb -rw-r--r-- 1 root root 10608196 Dec 2 06:30 /usr/local/src/nginx-dbg_1.18.0-2~focal_amd64.deb
Una vez que hayas terminado, puedes continuar con el siguiente paso.
Instalar Nginx y activar la compatibilidad con Brotli
Ahora tienes paquetes Nginx con soporte para Brotli. Puedes instalarlos con el siguiente comando:
cd /usr/local/src/ dpkg -i *.deb
Una vez instalados todos los paquetes, edita el archivo de configuración principal de Nginx y habilita el soporte para Brotli:
nano /etc/nginx/nginx.conf
Añade las siguientes líneas debajo de http{
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
Guarda y cierra el archivo y, a continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
Cuando hayas terminado, puedes pasar al siguiente paso.
Verificar Nginx y Brotli
Llegados a este punto, Nginx está instalado y configurado con soporte para Brotli. Ahora, es el momento de comprobar si el soporte Brotli de Nginx está habilitado o no.
Para comprobarlo, ejecuta el siguiente comando en tu terminal:
curl -H 'Accept-Encoding: br' -I http://localhost
Si todo va bien, verás el resultado ‘content-encoding: br’ para el soporte brotli como se muestra a continuación:
HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Wed, 02 Dec 2020 06:38:17 GMT Content-Type: text/html Last-Modified: Tue, 21 Apr 2020 14:09:01 GMT Connection: keep-alive ETag: W/"5e9efe7d-264" Content-Encoding: br
Conclusión
Enhorabuena! has instalado correctamente Nginx con soporte para Brotli en el servidor Ubuntu 20.04. Espero que ahora puedas habilitar fácilmente la compresión Brotli en el soporte de producción. No dudes en preguntarme si tienes alguna duda.