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

So sparen Sie Datenverkehr mit nginxs HttpGzipModule auf Debian Jessie

In diesem Tutorial beschreibe ich, wie HttpGzipModule auf einem Nginx-Webserver (auf Debian Jessie) konfiguriert wird. HttpGzipModule ermöglicht es nginx, Dateien zu komprimieren und sie an Clients (z. B. Browser) zu liefern, die komprimierte Inhalte verarbeiten können, was die meisten modernen Browser tun. Mit HttpGzipModule können Sie HTML-, CSS-, Javascript-, Text- oder XML-Dateien auf ca. 20 - 30 % ihrer ursprünglichen Größe, wodurch Sie Server-Traffic einsparen und Ihre Modem-Benutzer glücklicher machen.

Das Komprimieren von Dateien verursacht eine etwas höhere Last auf dem Server, die meiner Erfahrung nach jedoch dadurch kompensiert wird, dass die Verbindungszeiten der Clients zu Ihrem Server stark sinken. Beispielsweise benötigt ein Modembenutzer, der sieben Sekunden zum Herunterladen einer unkomprimierten HTML-Datei benötigte, jetzt möglicherweise nur noch zwei Sekunden für die gleiche, aber komprimierte Datei.

Durch die Verwendung von HttpGzipModule müssen Sie nicht befürchten, dass Sie Benutzer mit älteren Browsern ausschließen, die mit komprimierten Inhalten nicht umgehen können. Der Browser verhandelt mit dem Server, bevor eine Datei übertragen wird, und wenn der Browser nicht in der Lage ist, komprimierte Inhalte zu verarbeiten, liefert der Server die Dateien unkomprimiert.

1 Vorbemerkung

Ich gehe davon aus, dass Sie ein funktionierendes Nginx-Setup auf Ihrem Debian-Server haben, z. wie in dieser Anleitung gezeigt:Nginx mit PHP (als PHP-FPM) und MariaDB (LEMP) unter Debian 8 installieren

2 HttpGzipModule konfigurieren

Öffnen Sie /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Sie werden feststellen, dass die gzip-Komprimierung bereits aktiviert ist (im Abschnitt http {}):

[...]
http {
[...]
##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

[...] } [...]

gzip an; aktiviert die gzip-Komprimierung.

gzip_disable "MSIE [1-6]\.(?!.*SV1)"; deaktiviert die gzip-Komprimierung für Browser, die dies nicht unterstützen (in diesem Fall MS Internet Explorer vor Version 6 SV1).

Natürlich können wir diese Konfiguration verfeinern (eine Liste möglicher Konfigurationsanweisungen finden Sie auf http://nginx.org/en/docs/http/ngx_http_gzip_module.html):

gzip_http_version 1.1; - Dies aktiviert die gzip-Komprimierung für die HTTP-Anforderungsversion 1.1. Da der Content-Length-Header nicht gesetzt ist, macht dies Keepalives mit Version 1.0 unmöglich.

gzip_vary on; - Dadurch wird der Antwortheader Vary:Accept-Encoding festgelegt. Einige Proxys haben einen Fehler, da sie komprimierte Inhalte für Browser bereitstellen, die dies nicht unterstützen. Indem Sie den Header Vary:Accept-Encoding festlegen, weisen Sie Proxys an, sowohl eine komprimierte als auch eine unkomprimierte Version des Inhalts zu speichern.

gzip_comp_level 6; - Dies ist die Komprimierungsstufe (zwischen 1 und 9), wobei 1 die geringste Komprimierung (am schnellsten) und 9 die höchste (am langsamsten) ist.

gzip_proxyed beliebig; - Dies konfiguriert, wie Anfragen, die von einem Proxy kommen, gehandhabt werden sollen. Komprimierung für alle Anfragen aktivieren.

gzip_types Text/Klartext/HTML-Text/CSS-Anwendung/JSON-Anwendung/x-Javascript-Text/XML-Anwendung/XML-Anwendung/XML+RSS-Text/Javascript-Anwendung/Javascript-Text/x-js; - Dies teilt nginx mit, welche Dateitypen komprimiert werden sollen (Text/HTML wird immer komprimiert). Da Javascript-Dateien auf jedem Server unterschiedliche Dateitypen haben können, habe ich mehrere mögliche MIME-Typen für Javascript eingefügt (dasselbe gilt für XML).

gzip_buffers 16 8k; - Dies weist die Anzahl und die Größe der Komprimierungspuffer zu. Der Standardwert ist gzip_buffers 4 4k; oder gzip_buffers 4 8k;, aber ich habe diesen Wert erhöht, um sicherzustellen, dass auch große Javascript- oder CSS-Dateien komprimiert werden können.

Meine endgültige Konfiguration sieht also wie folgt aus:

[...]
http {
    [...]
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    [...]
}
[...]

nginx neu laden:

service nginx reload

3 Testen

Um zu testen, ob Ihre Konfiguration funktioniert, können Sie die Entwicklertools in Firefox oder Google Chrome verwenden und über Firefox auf eine Textdatei (z. B. eine statische HTML-Seite) zugreifen. In der Ausgabe der HTTP-Header sollten Sie nun sehen, dass der Client (Firefox) einen Accept-Encoding:gzip,deflate-Header gesendet hat, um dem Server mitzuteilen, dass er komprimierte Inhalte in den Formaten gzip und deflate akzeptiert; Der Server sollte die Datei komprimieren und mit einem Content-Encoding:gzip-Header senden (wie Sie in diesem Beispiel sehen, legt nginx auch den Vary:Accept-Encoding-Header fest):

  • nginx HttpGzipModule: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
  • Debian:http://www.debian.org/

Debian
  1. So installieren Sie Proxmox VE 4 auf Debian 8 (Jessie)

  2. So stellen Sie einen dynamischen DNS-Server mit Docker unter Debian 10 bereit

  3. So installieren Sie den HTTP-Git-Server mit Nginx unter Debian 11

  4. So installieren Sie WebDAV mit Lighttpd unter Debian 8 (Jessie)

  5. So konfigurieren Sie eine Firewall mit CSF unter Debian 9

So richten Sie einen Mailserver mit Modoboa unter Debian 10 ein

So installieren Sie den vsftpd-FTP-Server mit TLS unter Debian 10

So aktivieren Sie das HTTP2-Protokoll mit Nginx auf Debian 8 Jessie Server

So konfigurieren Sie LAMP mit Debian 11

So konfigurieren Sie Samba Server mit Debian 11

So installieren Sie Nginx mit PHP-FPM unter Debian 11