Nginx (engine-x) je open source vysoce výkonný HTTP server, reverzní proxy a IMAP/POP3 proxy server. Vynikající vlastnosti Nginx jsou stabilita, bohatá sada funkcí, jednoduchá konfigurace a nízká spotřeba paměti.
Brotli je open source kompresní algoritmus vytvořený společností Google. Brotli poskytuje lepší a bezztrátovou kompresi než gzip a nyní je podporována hlavními prohlížeči a webovými servery.
Více o představení Brotli:
- Příspěvek na blogu Akamai.
- Příspěvek Cloudflare o Brotli.
- Příspěvek na blogu Mozilla.
V tomto tutoriálu vám krok za krokem ukážu, jak přidat podporu pro kompresní algoritmus Brotli na webový server Nginx. Vytvoříme vlastní balíček nginx, který podporuje kompresní algoritmus brotli. Budeme používat nejnovější verzi Ubuntu a navíc vytvoříme balíček nginx pro operační systém Debian.
Předpoklady
- Ubuntu 18.04
- Oprávnění uživatele root
Co uděláme?
- Nainstalujte závislosti sestavení
- Nainstalujte Nginx pomocí ngx_brotli
- Přidat úložiště Nginx
- Stáhněte si Nginx a ngx_brotli
- Sestavte Nginx s podporou ngx_brotli
- Nainstalujte Nginx a povolte podporu ngx_brotli
- Nakonfigurujte virtuálního hostitele Nginx
- Testování
Krok 1 – Instalace závislostí sestavení
První věc, kterou potřebujeme pro tuto příručku, je nainstalovat závislosti sestavení do systému.
Aktualizujte úložiště Ubuntu a poté nainstalujte všechny závislosti sestavení balíčků pomocí příkazu apt níže.
sudo apt update
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
Počkejte, až se nainstalují všechny balíčky.
Krok 2 – Instalace Nginx pomocí ngx_brotli
V tomto kroku nainstalujeme vlastní balíček nginx, který podporuje kompresní algoritmus brotli v systému Ubuntu. A budeme používat nejnovější stabilní verzi balíčku nginx, kterou lze stáhnout z oficiálního úložiště nginx.
Přidat úložiště Nginx
Před přidáním úložiště nginx přidejte znak klíče nginx pomocí příkazu níže.
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Nyní vytvořte nový soubor úložiště nginx 'nginx.list' v adresáři '/etc/apt/sources.list.d' pomocí editoru vim.
vim /etc/apt/sources.list.d/nginx.list
Vložte konfiguraci níže.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Uložte a ukončete.
Nyní aktualizujte úložiště ubuntu.
sudo apt-get update
Bylo přidáno úložiště Nginx.
Stáhnout zdrojové soubory Nginx a ngx_brotli
Nyní si stáhneme balíčky Nginx z úložiště nginx pomocí příkazu apt.
Přejděte do adresáře '/usr/local/src' a stáhněte si zdrojový kód Nginx pomocí příkazu apt níže.
cd /usr/local/src
sudo apt source nginx
Nyní nainstalujte všechny potřebné závislosti balíčků pro nginx.
sudo apt build-dep nginx -y
A po dokončení veškeré instalace naklonujte zdrojový kód 'ngx_brotli' z GitHubu.
git clone --recursive https://github.com/google/ngx_brotli.git
Nginx a ngx_brotli byly staženy.
Sestavte Nginx s podporou ngx_brotli
Nyní musíme upravit výchozí pravidlo sestavení Nginx, musíme přidat ngx_brotli do pravidla sestavení balíčků.
Přejděte do adresáře '/usr/local/src/nginx-*' a upravte konfiguraci debian 'rules'.
cd /usr/local/src/nginx-*/
vim debian/rules
Nyní získáte dvě prostředí sestavení pro 'config.env.nginx a 'config.env.nginx_debug '. Přidejte volbu '--add-module=' pro ngx_brotli do obou sestavených prostředí.
--add-module=/usr/local/src/ngx_brotli
Uložte a ukončete.
A jsme připraveni zkompilovat a sestavit balíček nginx s podporou ngx_brotli.
Spusťte níže uvedený příkaz dpkg.
sudo dpkg-buildpackage -b -uc -us
Poznámka:
- -b:Vytváří pouze binární soubory, žádné zdrojové soubory.
- -uc :Nepodepsaný soubor .buildinfo a .changes.
- -us:nepodepsaný zdrojový balíček.
Po dokončení sestavení získáte balíčky nginx-*.deb v adresáři '/usr/local/src', jak je uvedeno níže.
ls -lah
Nainstalovat Nginx a povolit podporu Brotli
Sestavení nginx s ngx_brotli bylo dokončeno, nainstalujte balíčky nginx-*.deb pomocí příkazu dpkg níže.
cd /usr/local/src/
sudo dpkg -i *.deb
Nginx s podporou ngx_brotli byl nainstalován.
Nyní přejděte do konfiguračního adresáře '/etc/nginx' a upravte konfigurační soubor 'nginx.conf'.
cd /etc/nginx/
vim nginx.conf
Povolte ngx_brotli na nginx přidáním konfigurace níže do sekce '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;
Uložte a ukončete.
Otestujte konfiguraci nginx a ujistěte se, že nedochází k chybě.
nginx -t
Podpora komprese brotli byla povolena.
Krok 3 – Konfigurace virtuálního hostitele Nginx
V tomto kroku se pokusíme vytvořit nového virtuálního hostitele pro název domény nginx.hakase-labs.io.
Poznámka:
- Komprese Brotli podporuje pouze web HTTPS, takže se ujistěte, že máte soubory certifikátů pro název své domény, nebo si můžete vygenerovat bezplatné certifikáty Letsencrypt SSL.
Přejděte do konfiguračního adresáře '/etc/nginx' a vytvořte novou konfiguraci virtuálního hostitele 'brotli.conf'.
cd /etc/nginx/
vim conf.d/brotli.conf
Zde vložte následující konfiguraci virtuálního hostitele nginx.
# Redirect HTTP to HTTPS Nginx
server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io;
ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# web root directory location / { root /usr/share/nginx/html; } }
Uložte a ukončete.
Poznámka:
- Změňte název domény na svou vlastní doménu.
- Změňte cestu k certifikátům SSL.
Nyní otestujte konfiguraci nginx a ujistěte se, že nedošlo k chybě, poté restartujte službu.
nginx -t
systemctl restart nginx
Byl přidán nový virtuální hostitel nginx.
Krok 4 – Testování
Otevřete webový prohlížeč a zadejte název domény, moje je:
http://nginx.hakase-labs.io
Nyní budete přesměrováni na připojení https. Klikněte pravým tlačítkem na stránku a klikněte na 'Prozkoumat prvek '. Klikněte na položku Síť a znovu načtěte stránku.
Klikněte na podrobnosti požadavků a získáte záhlaví všech požadavků a odpovědí z webového serveru, jak je uvedeno níže.
V sekci 'Záhlaví odpovědí' uvidíte 'content-encoding:br' pro podporu brotli.
Nyní, pokud chcete další test, můžete použít příkaz curl, jak je znázorněno níže.
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
A uvidíte výsledek 'content-encoding:br' pro podporu brotli.
Instalace Nginx s podporou komprese Brotli na Ubuntu 18.04 byla úspěšně dokončena.
Odkazy
- https://github.com/google/ngx_brotli
- https://www.babak.io/blog/