Agregue soporte Brotli a Nginx en Ubuntu 18.04

Brotli (br) es un nuevo algoritmo de compresión de código abierto, desarrollado por Google como una alternativa a Gzip, Zopfli y Deflate. Se define formalmente en Internet Engineering Task Force (IETF) como RFC 7932 . El estudio de caso de Google sobre Brotli ha mostrado relaciones de compresión de hasta un 26% más pequeñas que los métodos actuales, con menos uso de CPU.

Nginx no tiene soporte oficial, pero hay un módulo de terceros desarrollado por Google llamado ngx_brotli que podemos usar para agregar soporte a Nginx.

Esta guía le mostrará cómo agregar soporte Brotli a Nginx en una nueva instancia de Ubuntu 18.04 LTS Vultr.

NOTA: Esta guía se usará johndoecomo un usuario de ejemplo y example.comcomo un dominio de ejemplo. Reemplácelos según sus nombres.

Requisitos

  • Servidor Ubuntu 18.04 LTS
  • Nginx versión 1.11.5 o superior
  • Nombre de dominio con A/ AAAAregistros configurados
  • Certificado TLS

Antes de que empieces

Verifica la versión de Ubuntu.

lsb_release -ds
# Ubuntu 18.04 LTS

Cree una nueva non-rootcuenta de usuario con sudoacceso y cámbiela.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

NOTA : Reemplace johndoecon su nombre de usuario .

Actualice el software de su sistema operativo.

sudo apt update && sudo apt upgrade -y

Configura la zona horaria.

sudo dpkg-reconfigure tzdata

Instale las herramientas y paquetes de compilación necesarios.

sudo apt install -y build-essential git apt-transport-https socat

Paso 1: instale Acme.sh y obtenga un certificado TLS de Let's Encrypt

Brotli requiere que configure y use HTTPS. En esta parte, obtendremos un certificado de confianza de Let's Encrypt.

Descargue e instale Acme.sh.

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
cd ~
source ~/.bashrc

Mira esta versión.

acme.sh --version
# v2.8.0

Obtenga certificados RSA y ECDSA para example.com.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail your_email@example.com --ocsp-must-staple --keylength 2048

# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail your_email@example.com --ocsp-must-staple --keylength ec-256

Después de ejecutar los comandos anteriores, sus certificados y claves estarán en las siguientes ubicaciones:

  • RSA: /etc/letsencrypt/example.com
  • ECC / ECDSA: /etc/letsencrypt/example.com_ecc

Paso 2 - Instala Nginx desde el repositorio oficial de Nginx

Descargue e instale la última línea principal de Nginx desde el repositorio oficial de Nginx.

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt

Mira esta versión.

sudo nginx -v
# nginx version: nginx/1.15.2

Habilita e inicia Nginx.

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

Paso 3 - Descarga y compila el código fuente de Brotli

Después de instalar Nginx, necesitamos construir el módulo Brotli ( ngx_brotli) como un módulo Nginx dinámico. A partir de la versión 1.11.5 de Nginx es posible compilar módulos dinámicos individuales sin compilar el software Nginx completo. En los próximos pasos, crearemos el módulo Brotli como dinámico sin compilar el Nginx completo.

Descargue la última versión del código fuente principal de Nginx y extráigala.

wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz

NOTA : Es muy importante que los números de versión del paquete Nginx y el código fuente de Nginx coincidan. Si instaló Nginx 1.15.2 desde el repositorio oficial de Nginx, entonces debe descargar la misma versión del código fuente , 1.15.2 en este caso.

Remover nginx-1.15.2.tar.gz.

rm nginx-1.15.2.tar.gz

Clon ngx_brotlide GitHub.

git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~

Navegue al directorio del código fuente de Nginx.

cd ~/nginx-1.15.2

Descargue las bibliotecas requeridas.

sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

Compilar el ngx_brotlicomo un módulo dinámico y copiarlo en el directorio estándar para los módulos de Nginx, /etc/nginx/modules.

./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules

Enumere los archivos /etc/nginx/modulesy verá ngx_http_brotli_filter_module.soy ngx_http_brotli_static_module.so.

ls /etc/nginx/modules

Establecer permisos para 644para todos los .soarchivos.

sudo chmod 644 /etc/nginx/modules/*.so

Paso 4: configurar Nginx

Estamos listos para configurar el soporte de Brotli en Nginx.

Ejecute sudo vim /etc/nginx/nginx.confy agregue las dos directivas siguientes en la parte superior del archivo para cargar nuevos módulos Brotli.

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

Probar la configuración.

sudo nginx -t

Cree un directorio raíz de documentos para example.comy cree index.htmlcon algún contenido en él.

sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit

Crea un host virtual para example.com.

sudo vim /etc/nginx/conf.d/example.com.conf

Rellene con la siguiente configuración.

server {
  listen 80;
  server_name example.com; # Replace with your domain name
  return 301 https://$server_name$request_uri;
}

server {    
  listen 443 ssl http2;
  server_name example.com; # Replace with your domain name

  root /var/www/example.com; # Replace with your document root

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  brotli on;
  brotli_static on;
  brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml image/svg+xml application/json;
}

Probar la configuración.

sudo nginx -t

Recargar Nginx.

sudo systemctl reload nginx.service

Visite su sitio en su navegador web y abra la pestaña de red de herramientas para desarrolladores. Verá Content-Encoding: bren los encabezados de respuesta. Ese es el indicador de que la compresión Brotli está funcionando.

Agregue soporte Brotli a Nginx en Ubuntu 18.04

Agregue soporte Brotli a Nginx en Ubuntu 18.04

Ha habilitado la compresión Brotli en su servidor web.

Dejar un comentario

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.