GNU/Linux >> Znalost Linux >  >> Cent OS

Jak povolit kompresi Brotli v Nginx na CentOS 8

Brotli je obecný bezztrátový kompresní algoritmus vyvinutý společností Google jako alternativa k Gzip, Zopfli a Deflate, který komprimuje data pomocí kombinace moderní varianty algoritmu LZ77, Huffmanova kódování a kontextového modelování 2 řádů s kompresním poměrem. srovnatelné s nejlepšími aktuálně dostupnými univerzálními kompresními metodami. Rychlostí je podobná jako s deflate, ale nabízí hustší kompresi.

Brotli je open-source pod licencí MIT.

Nginx nemá oficiální podporu, ale existuje modul třetí strany vyvinutý společností Google s názvem ngx_brotli, který můžete použít k přidání podpory do Nginx.

Tento návod vám ukáže, jak přidat podporu Brotli na webový server Nginx na serveru CentOS 8.

POZNÁMKA: Tento průvodce bude používat „johndoe" jako příklad uživatele a „example.com " jako příklad domény. Nahraďte je podle svých jmen.

Požadavky

  • Server CentOS 8
  • Nginx verze 1.11.5 nebo vyšší
  • Název domény s A /AAAA záznamy zřízen
  • certifikát TLS

Počáteční kroky

Zkontrolujte verzi CentOS:

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

Nastavte časové pásmo:

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

Aktualizujte balíčky operačního systému (software). Toto je důležitý první krok, protože zajišťuje, že máte nejnovější aktualizace a opravy zabezpečení pro výchozí softwarové balíčky vašeho operačního systému:

sudo dnf update -y

Nainstalujte si některé základní balíčky, které jsou nezbytné pro základní správu operačního systému CentOS:

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

Krok 1 – Nainstalujte Acme.sh a získejte certifikát TLS od společnosti Let's Encrypt

Brotli vyžaduje, abyste nastavili a používali HTTPS. V této části získáme důvěryhodný certifikát od Let's Encrypt.

Stáhněte a nainstalujte 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

Zkontrolujte verzi:

acme.sh --version
# v2.8.6

Získejte certifikáty RSA a ECDSA pro 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

Po spuštění výše uvedených příkazů budou vaše certifikáty a klíče v následujících umístěních:

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

Krok 2 – Nainstalujte Nginx z oficiálního úložiště Nginx

Budete si muset stáhnout a nainstalovat nejnovější hlavní řadu Nginx z oficiálního repozitáře Nginx :

Nainstalujte předpoklady:

sudo yum install yum-utils

Chcete-li nastavit úložiště yum, vytvořte soubor s názvem /etc/yum.repos.d/nginx.repo s následujícím obsahem:

[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

Ve výchozím nastavení se používá úložiště pro stabilní balíčky nginx. Musíme použít balíčky nginx hlavní řady. Chcete-li použít zdroj hlavního řádku, spusťte následující příkaz:

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

Chcete-li nainstalovat nginx, spusťte následující příkaz:

sudo yum install -y nginx

Zkontrolujte verzi Nginx:

sudo nginx -v
# nginx version: nginx/1.17.8

Povolte a spusťte službu Nginx:

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

Krok 3 – Stáhněte a zkompilujte zdrojový kód Brotli

Po instalaci Nginx musíme sestavit modul Brotli (ngx_brotli ) jako dynamický modul Nginx. Od verze Nginx 1.11.5 je možné kompilovat jednotlivé dynamické moduly bez kompilace kompletního softwaru Nginx. V několika následujících krocích vytvoříme modul Brotli jako dynamický bez kompilace kompletního Nginx.

Stáhněte si nejnovější verzi zdrojového kódu Nginx hlavní řady a rozbalte jej:

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

POZNÁMKA: Je velmi důležité, aby se čísla verzí balíčku Nginx a zdrojového kódu Nginx shodovala. Pokud jste nainstalovali Nginx 1.17.8 z oficiálního úložiště Nginx, pak musíte stáhnout stejnou verzi zdrojového kódu , v tomto případě 1.17.8.

Odstraňte nginx-1.17.8.tar.gz:

rm nginx-1.17.8.tar.gz

Klonujte ngx_brotli z GitHubu:

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

Přejděte do adresáře zdrojového kódu Nginx:

cd ~/nginx-1.17.8

Stáhněte si požadované knihovny:

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

Zkompilujte ngx_brotli jako dynamický modul a zkopírujte jej do standardního adresáře pro moduly Nginx, /etc/nginx/modules:

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

Seznam souborů v /etc/nginx/modules a uvidíte ngx_http_brotli_filter_module.so a ngx_http_brotli_static_module.so:

ls /etc/nginx/modules

Nastavte oprávnění na 644 pro všechny .so soubory:

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

Krok 4 – Konfigurace Nginx

Jsme připraveni nakonfigurovat podporu Brotli v Nginx.

Spusťte sudo vim /etc/nginx/nginx.conf a přidejte následující dvě direktivy na začátek souboru pro načtení nových modulů Brotli:

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

Otestujte konfiguraci:

sudo nginx -t

Vytvořte kořenový adresář dokumentu pro example.com a vytvořte index.html s nějakým obsahem:

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

Vytvořte virtuálního hostitele pro example.com:

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

Naplňte jej následující konfigurací:

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

Otestujte konfiguraci:

sudo nginx -t

Znovu načtěte Nginx:

sudo systemctl reload nginx.service

Navštivte svůj web ve webovém prohlížeči a otevřete kartu Síť nástrojů pro vývojáře. Zobrazí se Content-Encoding: br v hlavičkách odpovědí. To je indikátor, že komprese Brotli funguje.

A je to. V systému CentOS 8 jste povolili kompresi Brotli.

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

Cent OS
  1. Jak nainstalovat Phorum s Nginx na CentOS 7

  2. Jak povolit HTTP/2 v Nginx na Ubuntu a CentOS

  3. Jak nainstalovat LEMP Stack na CentOS 7

  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 8

  2. Jak nainstalovat Vagrant na CentOS 7

  3. Jak nainstalovat Gitea na CentOS 8

  1. Jak nainstalovat Memcached na CentOS 8

  2. Jak nainstalovat Nginx na CentOS 7

  3. Jak nainstalovat Apache na CentOS 7