Requisits
Abans que comencis
Pas 1: instal·leu Acme.sh i obteniu un certificat TLS de Let's Encrypt
Pas 2: instal·leu Nginx des del dipòsit oficial de Nginx
Pas 3: Baixeu i compileu el codi font de Brotli
Pas 4: configureu Nginx
Brotli (br) és un nou algorisme de compressió de codi obert, desenvolupat per Google com a alternativa a Gzip, Zopfli i Deflate. Es defineix formalment a Internet Engineering Task Force (IETF) com a RFC 7932 . L'estudi de cas de Google sobre Brotli ha mostrat ràtios de compressió fins a un 26% més petits que els mètodes actuals, amb menys ús de CPU.
Nginx no té suport oficial, però hi ha un mòdul de tercers desenvolupat per Google anomenat ngx_brotli que podem utilitzar per afegir suport a Nginx.
Aquesta guia us mostrarà com afegir suport Brotli a Nginx en una nova instància Vultr d'Ubuntu 18.04 LTS.
NOTA: Aquesta guia s'utilitzarà johndoecom a exemple d'usuari i example.comcom a exemple de domini. Substituïu-los segons els vostres noms.
Requisits
- Servidor Ubuntu 18.04 LTS
- Nginx versió 1.11.5 o superior
- Nom de domini amb
A/ AAAAregistres configurats
- Certificat TLS
Abans que comencis
Comproveu la versió d'Ubuntu.
lsb_release -ds
# Ubuntu 18.04 LTS
Creeu un non-rootcompte d'usuari nou amb sudoaccés i canvieu-hi.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NOTA : Substituïu-lo johndoepel vostre nom d'usuari .
Actualitzeu el programari del vostre sistema operatiu.
sudo apt update && sudo apt upgrade -y
Configura la zona horària.
sudo dpkg-reconfigure tzdata
Instal·leu les eines i els paquets de construcció necessaris.
sudo apt install -y build-essential git apt-transport-https socat
Pas 1: instal·leu Acme.sh i obteniu un certificat TLS de Let's Encrypt
Brotli requereix que configureu i utilitzeu HTTPS. En aquesta part obtindrem un certificat de confiança de Let's Encrypt.
Baixeu i instal·leu 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
Comproveu la versió.
acme.sh --version
# v2.8.0
Obteniu els certificats RSA i ECDSA per a 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
Després d'executar les ordres anteriors, els vostres certificats i claus estaran a les ubicacions següents:
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
Pas 2: instal·leu Nginx des del dipòsit oficial de Nginx
Baixeu i instal·leu la darrera línia principal de Nginx des del dipòsit 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
Comproveu la versió.
sudo nginx -v
# nginx version: nginx/1.15.2
Activeu i inicieu Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Pas 3: Baixeu i compileu el codi font de Brotli
Després d'instal·lar Nginx, hem de construir el mòdul Brotli ( ngx_brotli) com a mòdul Nginx dinàmic. A partir de la versió 1.11.5 de Nginx, és possible compilar mòduls dinàmics individuals sense compilar el programari Nginx complet. En els propers passos, construirem el mòdul Brotli com a dinàmic sense compilar el Nginx complet.
Baixeu la darrera versió del codi font principal de Nginx i extreu-lo.
wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz
NOTA : És molt important que els números de versió del paquet Nginx i el codi font de Nginx coincideixin. Si heu instal·lat Nginx 1.15.2 des del dipòsit oficial de Nginx, haureu de descarregar la mateixa versió del codi font , 1.15.2 en aquest cas.
Eliminar nginx-1.15.2.tar.gz.
rm nginx-1.15.2.tar.gz
Clonar ngx_brotlides de GitHub.
git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Navegueu al directori del codi font de Nginx.
cd ~/nginx-1.15.2
Baixeu les biblioteques necessàries.
sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
Compileu ngx_brotlicom a mòdul dinàmic i copieu-lo al directori estàndard per als mòduls Nginx, /etc/nginx/modules.
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
Enumereu els fitxers /etc/nginx/modulesi veureu ngx_http_brotli_filter_module.soi ngx_http_brotli_static_module.so.
ls /etc/nginx/modules
Estableix els permisos a 644per a tots els .sofitxers.
sudo chmod 644 /etc/nginx/modules/*.so
Estem preparats per configurar el suport de Brotli a Nginx.
Executeu sudo vim /etc/nginx/nginx.confi afegiu les dues directives següents a la part superior del fitxer per carregar nous mòduls Brotli.
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Proveu la configuració.
sudo nginx -t
Creeu un directori arrel de documents example.comi creeu index.html-hi contingut.
sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit
Creeu un host virtual per a example.com.
sudo vim /etc/nginx/conf.d/example.com.conf
Omple'l amb la configuració següent.
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;
}
Proveu la configuració.
sudo nginx -t
Torna a carregar Nginx.
sudo systemctl reload nginx.service
Visiteu el vostre lloc al vostre navegador web i obriu la pestanya de xarxa d'eines per a desenvolupadors. Ho veuràs Content-Encoding: bra les capçaleres de resposta. Aquest és l'indicador que la compressió Brotli funciona.

![Afegiu el suport de Brotli a Nginx a Ubuntu 18.04 Afegiu el suport de Brotli a Nginx a Ubuntu 18.04]()
Heu activat la compressió Brotli al vostre servidor web.