So aktivieren Sie die Brotli -Komprimierung in Nginx

So aktivieren Sie die Brotli -Komprimierung in Nginx

Die Brotli-Komprimierung ist eine generische Komprimierungstechnik, die in den Browsern weit verbreitet ist. Es ist vergleichbar mit den derzeit verfügbaren Komprimierungsmethoden, da es 20-26% bessere Komprimierungsverhältnisse bietet. Trotzdem ist es nicht gut, es sei denn, der Webserver sendet komprimierte textbasierte Ressourcen mit dem Brotli-Algorithmus.

In diesem Artikel erfahren wir, wie Komprimierung auf dem Server funktioniert und warum es nützlich ist? Wir werden auch lernen, den Nginx -Server zu installieren und unseren Server dazu zu bringen, brotli -komprimierte Dateien bereitzustellen.

Hintergrund

Komprimierungstechniken/Algorithmen verbessern die Website der Website, indem sie die Inhaltsgröße verringert. Daher benötigt die komprimierten Daten eine niedrige Last- und Übertragungszeit. Es hat jedoch einen Preis. Server verwenden viele Rechenressourcen, um eine bessere Komprimierungsrate zu bieten. Daher desto besser, desto teuer. Daher wird viel Aufwand hinzugefügt, um die Kompressionsformate zu verbessern und gleichzeitig minimale CPU -Zyklen zu verwenden.

Inzwischen wurde das potenziellste Komprimierungsformat gzipiert. Kürzlich wird Gzip durch einen neuen Komprimierungsalgorithmus ersetzt, der als Brotli bekannt ist. Es handelt sich. Im Gegensatz dazu basiert Gzip auf dem Deflatalgorithmus.

Das von Google entworfene verlustfreie Komprimierungsformat ist eng mit dem Deflat -Komprimierungsformat zusammenhängen. Beide Komprimierungsmethoden verwenden Schiebernfenster für die Rückenreferenzierung. Die Brotli -Schieberfenstergröße reicht von 1 kb bis 16 MB. Im Gegensatz dazu hat GZIP eine feste Fenstergröße von 32 KB. Das bedeutet.

Die Komprimierungskompatibilität der Server ist wichtig

Wenn wir eine Datei aus dem Browser herunterladen, fordert der Browser den Server an, welche Art von Komprimierung sie über einen Header unterstützt. Zum Beispiel, wenn der Browser unterstützt gzip Und Deflate zu dekomprimieren. Es wird diese Optionen in seine hinzufügen Akzeptieren, Kopfball, ich.e.,

ACCEPTION-CODING = ”Deflate, Gzip”

Daher werden die Browser, die diese Formate nicht unterstützen. Wenn der Server mit dem Inhalt reagiert, teilt er dem Browser über das Komprimierungsformat über einen Header mit, Inhaltskodierung. Wenn es GZIP unterstützt, sieht der Header so aus:

Content-coding = "gzip"

Header der Browser wie Firefox, die die Brotli -Komprimierung und den Webserver unterstützen, das ein Brotli -Modul installiert hat, um so auszusehen:

ACCEPTION-CODING = ”Deflate, Gzip, BR”
Content-Coding = "Gzip, BR"

Wenn der Browser das beste Komprimierungsformat verwendet und der Webserver nicht der Fall ist, ist es nicht gut, da der Webserver die Dateien nicht mit dem bevorzugten Komprimierungsalgorithmus zurücksendet. Deshalb ist es wichtig, das Komprimierungsmodul für den Webserver zu installieren.

Serverinstallation

Bevor wir uns mit der Brotli -Konfiguration fortsetzen, richten wir unseren Nginx -Server ein. Davor sudo APT-Get-Update Ihre Ubuntu -Verteilung und Ihre folgenden Befehle in Ihrem Bash -Terminal eingeben.

Ubuntu@Ubuntu: ~ $ sudo Apt-Get-Update
Ubuntu@Ubuntu: ~ $ sudo apt -Get Install nginx -y
Ubuntu@Ubuntu: ~ $ sudo service nginx starten

Um die Brotli -Komprimierung in der Nginx zu aktivieren, werden wir unsere kompilieren .Module gemäß unseren Nginx -Versionsdetails. Wie gezeigt, gibt das Eingeben des folgenden Befehls die Nginx -Version aus:

Ubuntu@Ubuntu: ~ $ nginx -v
Nginx Version: Nginx/1.18.0 (Ubuntu)

Benutze die wget Befehl zusammen mit Ihrem NGINX -Versionsdetail zum Herunterladen des Quellcodes von der NGINX -Website.

Ubuntu@ubuntu: ~ $ wget https: // nginx.org/download/nginx-1.18.0.Teer.gz
--2021-02-07 02: 57: 33-- https: // nginx.org/download/nginx-1.18.0.Teer.gz
Lösung nginx.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2A05: D014: EDB: 5702 :: 6,…
Verbindung zu Nginx herstellen.org (nginx.org) | 3.125.197.172 |: 443… verbunden.
HTTP -Anfrage gesendet, erwartet auf die Antwort… 200 OK
Länge: 1039530 (1015K) [Anwendung/Oktettstrom]
Speichern auf: 'nginx-1.18.0.Teer.GZ '
nginx-1.18.0.Teer.gz 100%[============================================== ====================>] 1015K 220KB/s in 4.8s
2021-02-07 02:57:38 (212 kb/s)-'nginx-1.18.0.Teer.GZ 'gerettet [1039530/1039530]

Wir werden diesen Quellcode verwenden, um * zu kompilieren *.Also Binärdateien für die Brotli -Komprimierung. Extrahieren Sie nun die Datei mit dem folgenden Befehl.

Ubuntu@Ubuntu: ~ $ tar xzf nginx-1.18.0.Teer.gz

Brotli -Modulkonfiguration

Jetzt hat Google das Brotli -Modul für Nginx veröffentlicht. Wir werden das Modul aus dem Google-Repository klonen.

Ubuntu@Ubuntu: ~ $ Git Clone https: // github.com/google/ngx_brotli -recursive.

Wir werden CD in die nginx-1.18.0 Ordner zum Konfigurieren des dynamischen Brotli -Moduls.

Ubuntu@Ubuntu: ~ $ cd nginx-1.18.0/
Ubuntu@Ubuntu: ~ $ sudo ./configure-mit compat --add-dynamic-module =… /ngx_brotli

Hinweis: Sie erhalten möglicherweise den folgenden Fehler beim Konfigurieren

./Konfigurieren: Fehler: Das HTTP -Umschreiben -Modul benötigt die PCRE -Bibliothek.
Sie können das Modul entweder deaktivieren, indem Sie-ohne HTTP_REWRITE_MODULE verwenden
Option oder installieren Sie die PCRE -Bibliothek in das System oder erstellen Sie die PCRE -Bibliothek
statisch aus der Quelle mit Nginx durch Verwendung von-with-pcre = Option.

Führen Sie in diesem Fall den folgenden Befehl aus, um die PCRE -Bibliothek zu installieren

Ubuntu@ubuntu: ~ $ sudo apt-Get Install libpcre3-dev -y

Modulkompilierung

Wir werden die verwenden machen Befehl zum Erstellen von a Module Ordner im Nginx-1.18.0 Verzeichnis.

Ubuntu@Ubuntu: ~ $ sudo machen Module

Wir benutzen das CP Befehl zum kopieren ngx_http_brotli*.So Dateien aus dem nginx-1.18.0/objs Ordner zum Modulordner.

Ubuntu@Ubuntu: ~ $ cd /nginx-1.18.0/objs/
Ubuntu@Ubuntu: ~ $ sudo cp ngx_http_brotli*.So /usr/share/nginx/Module

Listen Sie nun den Inhalt der Dateien mit dem auf ls Befehl. Sie werden feststellen, dass es aus zwei verschiedenen Moduldateien besteht, ich.e.:

Ubuntu@Ubuntu: ~ $ ls ngx_http_brotli*.So
ngx_http_brotli_filter_module.So
ngx_http_brotli_static_module.So
  • Regulares Brotli -Modul: Die ngx_http_brotli_filter_module.Das Modul komprimiert also alle Dateien im laufenden Fliegen und erfordert daher mehr Rechenressourcen
  • Statische Brotli -Modul: Die ngx_http_brotli_static_module.Das Modul ermöglicht es daher, vorkomprimierte statische Dateien zu dienen, daher weniger ressourcenintensiv.

Verwenden Sie jetzt Ihren bevorzugten Editor, um die/etc/nginx/nginx zu öffnen.Conf -Datei zum Hinzufügen von Brotli -Lademodulen, um die Brotli -Konfiguration durch Einbeziehung der folgenden Zeilen zu starten:

Ubuntu@ubuntu: ~ $ sudo vim/etc/nginx/nginx.Conf
# Abschnitt Modul laden
load_module "module/ngx_http_brotli_filter_module.So";
load_module "module/ngx_http_brotli_static_module.So";

Wir werden auch Konfigurationsordnerpfade einbeziehen /etc/nginx/conf.D/*.Conf

Und /usr/share/nginx/modules/*.Conf In der obigen Datei wie:

http
# Konfigurationsordner enthalten
Inhaftieren/etc/nginx/conf.D/*.conf;
include/usr/sharle/nginx/modules/*.conf;

So fügen Sie die Brotli -Konfiguration hinzu, öffnen Sie/etc/nginx/conf.D/Brotli.Conf

Datei in der Vim Editor und aktivieren Sie Brotli, indem Sie die folgenden Konfigurationsrichtlinien festlegen:

Brotli auf;
brotli_static on;
brotli_comp_level 6;
brotli_types application/rss+xml application/xhtml+xml
Text/CSS Text/Plain;

Der "Brotli aus | auf”Wert ermöglicht oder deaktiviert dynamisch oder im Fliegenkomprimieren des Inhalts.

Der 'brotli_ static on ' Ermöglicht dem Nginx-Server, zu überprüfen, ob die vorkomprimierten Dateien mit dem .BR -Erweiterungen existieren oder nicht. Wir können diese Einstellung auch in eine Option umwandeln aus oder stets. Der stets Der Wert ermöglicht dem Server, vorkomprimierte Inhalte zu senden, ohne zu bestätigen, ob der Browser ihn unterstützt oder nicht. Da Brotli ressourcenintensiv ist, eignet sich dieses Modul am besten, um die Engpasssituationen zu reduzieren.

Der "brotli_comp_level 6”Die Richtlinie setzt das dynamische Komprimierungsqualitätsniveau auf 6. Es kann zwischen 0 und 11 reichen.

Schließlich aktivieren Sie die dynamische Komprimierung für bestimmte MIME -Typen, während Text/HTML -Antworten immer komprimiert werden. Die Standardsyntax für diese Anweisung ist Brotli_types [MIME -Typ]. Weitere Informationen zur Konfigurationsrichtlinie finden Sie in GitHub.

Speichern Sie die Änderungen und starten Sie den Nginx -Dienst durch Eingabe neu "Sudo Service Neustart Nginx" Und alles ist alles getan.

Abschluss

Nach den Änderungen werden Sie einige offensichtliche Verbesserungen der Leistungsmetriken feststellen. Es wird jedoch mit einem leichten Nachteil der erhöhten CPU -Last zu Spitzenzeiten geliefert. Um solche Situationen zu vermeiden, behalten Sie die CPU -Verwendung im Auge; Wenn es regelmäßig 100% erreicht, können wir viele Optionen gemäß unseren Vorlieben nutzen, z.