GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So fügen Sie Brotli-Komprimierungsunterstützung zu Nginx unter Debian 10 hinzu

Brotli ist ein generischer verlustfreier Komprimierungsalgorithmus, der von Google als Alternative zu Gzip, Zopfli und Deflate entwickelt wurde und Daten mithilfe einer Kombination aus einer modernen Variante des LZ77-Algorithmus, Huffman-Codierung und Kontextmodellierung 2. Ordnung mit einem Komprimierungsverhältnis komprimiert vergleichbar mit den besten derzeit verfügbaren Allzweck-Komprimierungsmethoden. Es ist ähnlich schnell wie beim Ablassen, bietet aber eine dichtere Kompression.

Brotli ist Open-Source unter der MIT-Lizenz.

Nginx hat keinen offiziellen Support, aber es gibt ein von Google entwickeltes Drittanbietermodul namens ngx_brotli, das Sie verwenden können, um Nginx Unterstützung hinzuzufügen.

Diese Anleitung zeigt Ihnen, wie Sie Brotli-Unterstützung zum Nginx-Webserver auf einem Debian 10-System hinzufügen.

HINWEIS: In diesem Leitfaden wird "johndoe" als Beispielnutzer und "example.com " als Beispieldomain. Ersetzen Sie sie durch Ihre Namen.

Anforderungen

  • Debian 10 (Buster)-Server
  • Nginx-Version 1.11.5 oder höher
  • Domänenname mit A /AAAA Rekorde aufgestellt
  • TLS-Zertifikat

Erste Schritte

Überprüfen Sie Ihre Debian-Version:

lsb_release -ds
# Debian GNU/Linux 10 (buster)

Richten Sie die Zeitzone ein:

sudo dpkg-reconfigure tzdata

Aktualisieren Sie Ihre Betriebssystempakete (Software). Dies ist ein wesentlicher erster Schritt, da dadurch sichergestellt wird, dass Sie über die neuesten Updates und Sicherheitsfixes für die Standardsoftwarepakete Ihres Betriebssystems verfügen:

sudo apt update && sudo apt upgrade -y

Installieren Sie einige wichtige Pakete, die für die grundlegende Verwaltung des Debian-Betriebssystems erforderlich sind:

sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-https

Schritt 1 – Installieren Sie Acme.sh und erhalten Sie ein TLS-Zertifikat von Let's Encrypt

Brotli erfordert, dass Sie HTTPS einrichten und verwenden. In diesem Teil erhalten wir ein vertrauenswürdiges Zertifikat von Let's Encrypt.

Laden Sie Acme.sh herunter und installieren Sie es:

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

Überprüfen Sie die Version:

acme.sh --version
# v2.8.2

Rufen Sie RSA- und ECDSA-Zertifikate für example.com: ab

# 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

Nachdem Sie die obigen Befehle ausgeführt haben, befinden sich Ihre Zertifikate und Schlüssel an den folgenden Orten:

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

Schritt 2 – Installieren Sie Nginx aus dem offiziellen Nginx-Repository

Laden Sie das neueste Mainline-Nginx aus dem offiziellen Nginx-Repo herunter und installieren Sie es:

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/debian/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/debian/ `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

Überprüfen Sie die Nginx-Version:

sudo nginx -v
# nginx version: nginx/1.17.4

Nginx-Dienst aktivieren und starten:

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

Schritt 3 – Laden Sie den Brotli-Quellcode herunter und kompilieren Sie ihn

Nach der Installation von Nginx müssen wir das Brotli-Modul (ngx_brotli ) als dynamisches Nginx-Modul. Ab Nginx-Version 1.11.5 ist es möglich, einzelne dynamische Module zu kompilieren, ohne die komplette Nginx-Software zu kompilieren. In den nächsten Schritten werden wir das Brotli-Modul dynamisch erstellen, ohne das vollständige Nginx zu kompilieren.

Laden Sie die neueste Version des Nginx-Hauptquellcodes herunter und extrahieren Sie ihn:

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

HINWEIS: Es ist sehr wichtig, dass die Versionsnummern des Nginx-Pakets und des Nginx-Quellcodes übereinstimmen. Wenn Sie Nginx 1.17.4 aus dem offiziellen Nginx-Repository installiert haben, müssen Sie dieselbe Version des Quellcodes herunterladen , 1.17.4 in diesem Fall.

Entfernen Sie nginx-1.17.4.tar.gz:

rm nginx-1.17.4.tar.gz

Klonen Sie ngx_brotli von GitHub:

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

Navigieren Sie zum Nginx-Quellcodeverzeichnis:

cd ~/nginx-1.17.4

Laden Sie die erforderlichen Bibliotheken herunter:

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

Kompilieren Sie das ngx_brotli als dynamisches Modul und kopieren Sie es in das Standardverzeichnis für Nginx-Module, /etc/nginx/modules:

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

Dateien in /etc/nginx/modules auflisten und Sie werden ngx_http_brotli_filter_module.so sehen und ngx_http_brotli_static_module.so:

ls /etc/nginx/modules

Setzen Sie die Berechtigungen auf 644 für alle .so Dateien:

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

Schritt 4 – Nginx konfigurieren

Wir sind bereit, die Brotli-Unterstützung in Nginx zu konfigurieren.

Führen Sie sudo vim /etc/nginx/nginx.conf aus und fügen Sie die folgenden beiden Direktiven am Anfang der Datei hinzu, um neue Brotli-Module zu laden:

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

Testen Sie die Konfiguration:

sudo nginx -t

Erstellen Sie ein Dokumentstammverzeichnis für example.com und erstellen Sie index.html mit etwas Inhalt darin:

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

Erstellen Sie einen virtuellen Host für example.com:

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

Füllen Sie es mit der folgenden Konfiguration:

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

Testen Sie die Konfiguration:

sudo nginx -t

Nginx neu laden:

sudo systemctl reload nginx.service

Besuchen Sie Ihre Website in Ihrem Webbrowser und öffnen Sie die Registerkarte „Netzwerk“ der Entwicklertools. Sie sehen Content-Encoding: br in den Antwortheadern. Das ist der Indikator dafür, dass die Brotli-Komprimierung funktioniert.

Das ist es. Sie haben die Brotli-Komprimierung auf Ihrem Debian 10-System aktiviert.

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

Debian
  1. So kompilieren Sie das Brotli-Komprimierungstool aus der Quelle unter Debian 9

  2. So installieren Sie Nginx unter Debian 8 (Jessie)

  3. So installieren Sie Nginx unter Debian 9 (Stretch)

  4. So richten Sie Nginx mit HTTP/2-Unterstützung unter Debian 9 ein

  5. So installieren Sie den LEMP-Stack auf Debian 10 Buster

So installieren Sie Nginx mit PHP-FPM unter Debian 10

So installieren Sie die neueste Nginx Mainline oder Stable unter Debian 11

So installieren Sie Nginx Google Pagespeed unter Debian 11 Bullseye

So installieren Sie den LEMP-Stack unter Debian 11

So installieren Sie Go unter Debian 11

So fügen Sie Swap Space unter Debian 11 hinzu