GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come abilitare la compressione Brotli in Nginx su CentOS 8

Brotli è un algoritmo di compressione lossless generico sviluppato da Google come alternativa a Gzip, Zopfli e Deflate che comprime i dati utilizzando una combinazione di una moderna variante dell'algoritmo LZ77, codifica Huffman e modellazione del contesto a 2 ordini, con un rapporto di compressione paragonabile ai migliori metodi di compressione per uso generico attualmente disponibili. È simile in velocità allo sgonfiaggio ma offre una compressione più densa.

Brotli è open source con licenza MIT.

Nginx non ha supporto ufficiale ma esiste un modulo di terze parti sviluppato da Google chiamato ngx_brotli che puoi utilizzare per aggiungere supporto a Nginx.

Questo tutorial ti mostrerà come aggiungere il supporto Brotli al server web Nginx sul server CentOS 8.

NOTA: Questa guida utilizzerà "johndoe" come utente di esempio e "example.com " come esempio di dominio. Sostituiscili in base ai tuoi nomi.

Requisiti

  • Server CentOS 8
  • Nginx versione 1.11.5 o successiva
  • Nome di dominio con A /AAAA record impostati
  • Certificato TLS

Passaggi iniziali

Controlla la tua versione di CentOS:

cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)

Imposta il fuso orario:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Aggiorna i pacchetti del tuo sistema operativo (software). Questo è un primo passo importante perché ti assicura di avere gli ultimi aggiornamenti e correzioni di sicurezza per i pacchetti software predefiniti del tuo sistema operativo:

sudo dnf update -y

Installa alcuni pacchetti essenziali necessari per l'amministrazione di base del sistema operativo CentOS:

sudo dnf install -y curl wget vim git unzip socat bash-completion epel-release socat && sudo dnf groupinstall "Development Tools"

Passaggio 1:installa Acme.sh e ottieni un certificato TLS da Let's Encrypt

Brotli richiede la configurazione e l'utilizzo di HTTPS. In questa parte, otterremo un certificato attendibile da Let's Encrypt.

Scarica e installa 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 [email protected]
cd ~
source ~/.bashrc

Controlla la versione:

acme.sh --version
# v2.8.6

Ottieni certificati RSA ed ECDSA per example.com:

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength ec-256

Dopo aver eseguito i comandi precedenti, i certificati e le chiavi si troveranno nelle seguenti posizioni:

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

Passaggio 2:installa Nginx dal repository Nginx ufficiale

Dovrai scaricare e installare l'ultima linea principale Nginx dal repo Nginx ufficiale :

Installa i prerequisiti:

sudo yum install yum-utils

Per configurare il repository yum, crea il file denominato /etc/yum.repos.d/nginx.repo con i seguenti contenuti:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Per impostazione predefinita, viene utilizzato il repository per i pacchetti nginx stabili. Dobbiamo usare i pacchetti nginx della linea principale. Esegui il comando seguente per utilizzare l'origine della linea principale:

sudo yum-config-manager --enable nginx-mainline

Per installare nginx, esegui il seguente comando:

sudo yum install -y nginx

Controlla la versione di Nginx:

sudo nginx -v
# nginx version: nginx/1.17.8

Abilita e avvia il servizio Nginx:

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

Fase 3:scarica e compila il codice sorgente di Brotli

Dopo aver installato Nginx, dobbiamo creare il modulo Brotli (ngx_brotli ) come modulo Nginx dinamico. A partire dalla versione 1.11.5 di Nginx è possibile compilare singoli moduli dinamici senza compilare il software Nginx completo. Nei prossimi passaggi, costruiremo il modulo Brotli come dinamico senza compilare Nginx completo.

Scarica l'ultima versione del codice sorgente Nginx della linea principale ed estrailo:

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

NOTA: È molto importante che i numeri di versione del pacchetto Nginx e il codice sorgente di Nginx corrispondano. Se hai installato Nginx 1.17.8 dal repository Nginx ufficiale, devi scaricare la stessa versione del codice sorgente , 1.17.8 in questo caso.

Rimuovi nginx-1.17.8.tar.gz:

rm nginx-1.17.8.tar.gz

Clona ngx_brotli da GitHub:

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

Vai alla directory del codice sorgente di Nginx:

cd ~/nginx-1.17.8

Scarica le librerie richieste:

sudo dnf install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

Compila il ngx_brotli come modulo dinamico e copialo nella directory standard per i moduli Nginx, /etc/nginx/modules:

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

Elenca i file in /etc/nginx/modules e vedrai ngx_http_brotli_filter_module.so e ngx_http_brotli_static_module.so:

ls /etc/nginx/modules

Imposta le autorizzazioni su 644 per tutti i .so file:

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

Fase 4 – Configura Nginx

Siamo pronti per configurare il supporto Brotli in Nginx.

Esegui sudo vim /etc/nginx/nginx.conf e aggiungi le seguenti due direttive nella parte superiore del file per caricare nuovi moduli Brotli:

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

Testare la configurazione:

sudo nginx -t

Crea una directory principale del documento per example.com e crea index.html con alcuni contenuti:

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

Crea un host virtuale per example.com:

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

Popolalo con la seguente configurazione:

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;
}

Testare la configurazione:

sudo nginx -t

Ricarica Nginx:

sudo systemctl reload nginx.service

Visita il tuo sito nel tuo browser web e apri la scheda Rete degli strumenti per sviluppatori. Vedrai Content-Encoding: br nelle intestazioni delle risposte. Questo è l'indicatore del funzionamento della compressione Brotli.

Questo è tutto. Hai abilitato la compressione Brotli sul tuo sistema CentOS 8.

  • https://brotli.org/
  • https://github.com/google/brotli
  • https://github.com/google/ngx_brotli
  • https://en.wikipedia.org/wiki/Brotli

Cent OS
  1. Come installare e configurare Nginx su CentOS 8

  2. Come installare Vagrant su CentOS 7

  3. Come installare Phorum con Nginx su CentOS 7

  4. Come abilitare HTTP/2 in Nginx su Ubuntu e CentOS

  5. Come installare lo stack LEMP su CentOS 7

Come abilitare la compressione Gzip su Nginx

Come rimuovere completamente Nginx su CentOS

Come installare Nginx su CentOS 9 Stream

Come abilitare la compressione Brotli su Apache

Come proteggere Nginx con Let's Encrypt su CentOS 8

Come abilitare HTTP/2.0 in Nginx su CentOS