Nginx

So aktivieren Sie die Brotli-Komprimierung in Nginx

So aktivieren Sie die Brotli-Komprimierung in Nginx

Die Brotli-Komprimierung ist eine allgemeine Komprimierungstechnik, die von allen Browsern weithin unterstützt wird. Es ist mit den derzeit verfügbaren Komprimierungsmethoden vergleichbar, da es 20-26% bessere Komprimierungsverhältnisse bietet. Trotzdem nützt es nichts, es sei denn, der Webserver sendet komprimierte textbasierte Ressourcen mit dem Brotli-Algorithmus.

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

Hintergrund

Komprimierungstechniken/Algorithmen verbessern die Website-Performance, indem sie die Inhaltsgröße reduzieren. Daher benötigen die komprimierten Daten eine geringe Lade- und Übertragungszeit. Allerdings hat es seinen Preis. Server verwenden viele Rechenressourcen, um eine bessere Komprimierungsrate bereitzustellen. Also je besser, desto teurer. Es wird also viel Aufwand betrieben, um die Komprimierungsformate zu verbessern und gleichzeitig minimale CPU-Zyklen zu nutzen.

Inzwischen war das potenziellste Komprimierungsformat gzipped. Vor kurzem wurde gzip durch einen neuen Komprimierungsalgorithmus namens Brotli . ersetzt. Es ist ein fortschrittlicher Komprimierungsalgorithmus, der aus Huffman-Codierung, dem L77-Algorithmus und Kontextmodellierung besteht. Im Gegensatz dazu basiert Gzip auf dem Deflate-Algorithmus.

Das von Google entwickelte verlustfreie Komprimierungsformat ist eng mit dem Deflate-Komprimierungsformat verwandt. Beide Komprimierungsmethoden verwenden Schiebefenster für die Rückreferenzierung. Die Größe des Brotli-Schiebefensters reicht von 1 KB bis 16 MB. Im Gegensatz dazu hat Gzip eine feste Fenstergröße von 32 KB. Das bedeutet, dass Brotlis Fenster 512 mal größer ist als das Deflate-Fenster, was nicht relevant ist, da Textdateien, die größer als 32 KB sind, selten auf Webservern vorhanden sind.

Die Komprimierungskompatibilität des Servers ist wichtig

Immer wenn wir eine Datei vom Browser herunterladen, fragt der Browser den Server an, welche Art von Komprimierung er über einen Header unterstützt. Wenn der Browser beispielsweise the unterstützt gzip und entleeren dekomprimieren. Es wird diese Optionen in seine Akzeptieren-Kodierung, Kopfzeile, ich.e.,

Accept-Encoding=”deflate, gzip”

Daher werden die Browser, die diese Formate nicht unterstützen, sie nicht in den Header aufnehmen. Wenn der Server mit dem Inhalt antwortet, teilt er dem Browser das Komprimierungsformat durch einen Header mit, Inhaltscodierung. Wenn es gzip unterstützt, sieht der Header daher so aus:

Content-Encoding=”gzip”

Die Header der Browser wie Firefox, die die Brotli-Komprimierung unterstützen, und des Webservers, auf dem ein Brotli-Modul installiert ist, sehen wie folgt aus:

Accept-Encoding=”deflate, gzip, br”
Content-Encoding=”gzip, br”

Wenn also der Browser das beste Komprimierungsformat verwendet und der Webserver nicht, ist dies 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 mit der Brotli-Konfiguration fortfahren, werden wir unseren Nginx-Server einrichten. Davor sudo apt-get-Update Ihre Ubuntu-Distribution und geben Sie die folgenden Befehle in Ihr Bash-Terminal ein.

[email protected]:~$ sudo apt-get update
[email protected]:~$ sudo apt-get install nginx -y
[email protected]:~$ sudo service nginx start

Um die Brotli-Komprimierung in Nginx zu aktivieren, werden wir unsere .also Module gemäß unseren Nginx-Versionsdetails. Wie gezeigt wird durch Eingabe des folgenden Befehls die Nginx-Version ausgegeben:

[email protected]:~$ nginx -v
nginx-Version: nginx/1.18.0 (Ubuntu)

Verwenden Sie die wget Befehl zusammen mit Ihren Nginx-Versionsdetails, um den Quellcode von der Nginx-Website herunterzuladen.

[email protected]:~$ 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
Auflösen von nginx.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6,…
Verbindung zu nginx.org (nginx.org)|3.125.197.172|:443… verbunden.
HTTP-Anfrage gesendet, auf Antwort warten… 200 OK
Länge: 1039530 (1015K) [Anwendung/Oktett-Stream]
Speichern unter: 'nginx-1.18.0.Teer.gz'
nginx-1.18.0.Teer.gz             100 %[============================================ ====================>]   1015 K   220 KB/s in 4.8s
07.02.2021 02:57:38 (212 KB/s) - 'nginx-1.18.0.Teer.gz' gespeichert [1039530/1039530]

Wir verwenden diesen Quellcode zum Kompilieren *.also Binärdateien für die Brotli-Komprimierung. Entpacken Sie nun die Datei mit dem folgenden Befehl.

[email protected]:~$ tar xzf nginx-1.18.0.Teer.gz

Konfiguration des Brotli-Moduls

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

[email protected]:~$ git clone https://github.com/google/ngx_brotli --rekursiv.

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

[email protected]:~$ cd nginx-1.18.0/
[email protected]:~$ sudo ./configure --with-compat --add-dynamic-module=… /ngx_brotli

Hinweis: Während der Konfiguration erhalten Sie möglicherweise die folgende Fehlermeldung

./configure: error: Das HTTP-Rewrite-Modul benötigt die PCRE-Bibliothek.
Sie können das Modul entweder deaktivieren, indem Sie --Without-http_rewrite_module . verwenden
Option, oder installieren Sie die PCRE-Bibliothek im System oder erstellen Sie die PCRE-Bibliothek
statisch aus der Quelle mit nginx mit --with-pcre= Möglichkeit.

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

[email protected]:~$ sudo apt-get install libpcre3-dev -y

Modulzusammenstellung

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

[email protected]:~$ sudo Module erstellen

Wir benutzen das cp Befehl zum Kopieren ngx_http_brotli*.so Dateien aus dem nginx-1.18.0/Objekte Ordner in den Modulordner.

[email protected]:~$ cd /nginx-1.18.0/Objekte/
[email protected]:~$ sudo cp  ngx_http_brotli*.so /usr/share/nginx/modules

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

[email protected]:~$ ls ngx_http_brotli*.so
ngx_http_brotli_filter_module.so
ngx_http_brotli_static_module.so
  • Regelmäßiges Brotli-Modul: Das ngx_http_brotli_filter_module.Das Modul komprimiert also alle Dateien im laufenden Betrieb und erfordert daher mehr Rechenressourcen
  • Statisches Brotli-Modul: Das ngx_http_brotli_static_module.Das Modul ermöglicht es, vorkomprimierte statische Dateien bereitzustellen, und ist daher weniger ressourcenintensiv.

Verwenden Sie nun Ihren bevorzugten Editor, um die Datei /etc/nginx/nginx . zu öffnen.conf-Datei, um Brotli-Lademodule hinzuzufügen, um die Brotli-Konfiguration zu beginnen, indem Sie die folgenden Zeilen einschließen:

[email protected]:~$ sudo vim /etc/nginx/nginx.conf
# Modulabschnitt laden
load_module "modules/ngx_http_brotli_filter_module.so";
load_module "modules/ngx_http_brotli_static_module.so";

Wir werden auch Konfigurationsordnerpfade einschließen /etc/nginx/conf.t/*.conf

und /usr/share/nginx/modules/*.conf in der obigen Datei wie:

http
# Konfigurationsordner einschließen
einschließen /etc/nginx/conf.t/*.conf;
/usr/share/nginx/modules/* einschließen.conf;

Um die Brotli-Konfiguration hinzuzufügen, öffnen Sie /etc/nginx/conf.d/brotli.conf

Datei in der vim Editor und aktivieren Sie Brotli, indem Sie die folgenden Konfigurationsanweisungen festlegen:

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

Das "Brotli aus|an” Wert aktiviert oder deaktiviert die dynamische oder spontane Komprimierung des Inhalts.

Das 'brotli_ statisch an' 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 immer. Das immer Wert ermöglicht es dem Server, vorkomprimierten Inhalt zu senden, ohne zu bestätigen, ob der Browser dies unterstützt oder nicht. Da Brotli ressourcenintensiv ist, ist dieses Modul am besten geeignet, um die Engpasssituationen zu reduzieren.

Das "brotli_comp_level 6”-Direktive setzt die Qualitätsstufe der dynamischen Komprimierung auf 6. Es kann von 0 bis 11 reichen.

Aktivieren Sie schließlich die dynamische Komprimierung für bestimmte MIME-Typen, während Text-/HTML-Antworten immer komprimiert werden. Die Standardsyntax für diese Direktive ist brotli_types [Mime-Typ]. Mehr über die Konfigurationsdirektive finden Sie auf Github.

Speichern Sie die Änderungen, starten Sie den Nginx-Dienst neu, indem Sie eingeben „Sudo-Dienst Neustart nginx“ und alles ist fertig.

Fazit

Nach den Änderungen werden Sie einige offensichtliche Verbesserungen bei den Leistungskennzahlen feststellen. Es hat jedoch einen kleinen Nachteil der erhöhten CPU-Last zu Spitzenzeiten. Um solche Situationen zu vermeiden, sollten Sie die CPU-Auslastung im Auge behalten. Wenn es regelmäßig 100 % erreicht, können wir viele Optionen nach unseren Vorlieben nutzen, z. B. vorkomprimierte oder statische Inhalte präsentieren, die Komprimierungsstufe senken und die On-the-Fly-Komprimierung deaktivieren.

Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...