Nginx (engine-x) ist ein Open-Source-Hochleistungs-HTTP-Server, Reverse-Proxy und IMAP/POP3-Proxy-Server. Die herausragenden Merkmale von Nginx sind Stabilität, ein reichhaltiges Feature-Set, einfache Konfiguration und geringer Speicherverbrauch.
Brotli ist ein von Google erstellter Open-Source-Komprimierungsalgorithmus. Brotli bietet eine bessere und verlustfreie Komprimierung als gzip und wird jetzt von den wichtigsten Browsern und Webservern unterstützt.
Mehr zur Brotli-Performance:
- Akamai-Blogbeitrag.
- Cloudflare-Post über Brotli.
- Mozilla-Blogbeitrag.
In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie Unterstützung für den Brotli-Komprimierungsalgorithmus im Nginx-Webserver hinzufügen. Wir werden ein benutzerdefiniertes Nginx-Paket erstellen, das den Brotli-Komprimierungsalgorithmus unterstützt. Wir werden die neueste Ubuntu-Version verwenden und ein nginx-Paket für das Debian-Betriebssystem erstellen.
Voraussetzungen
- Ubuntu 18.04
- Root-Rechte
Was werden wir tun?
- Build-Abhängigkeiten installieren
- Installieren Sie Nginx mit ngx_brotli
- Nginx-Repository hinzufügen
- Nginx und ngx_brotli herunterladen
- Nginx mit ngx_brotli-Unterstützung erstellen
- Installieren Sie Nginx und aktivieren Sie die ngx_brotli-Unterstützung
- Konfigurieren Sie den virtuellen Nginx-Host
- Testen
Schritt 1 – Build-Abhängigkeiten installieren
Als erstes müssen wir für diese Anleitung die Build-Abhängigkeiten auf dem System installieren.
Aktualisieren Sie das Ubuntu-Repository und installieren Sie dann alle Paketerstellungsabhängigkeiten mit einem apt-Befehl unten.
sudo apt update
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
Warten Sie, bis alle Pakete installiert sind.
Schritt 2 – Nginx mit ngx_brotli installieren
In diesem Schritt installieren wir das benutzerdefinierte nginx-Paket, das den Brotli-Komprimierungsalgorithmus auf dem Ubuntu-System unterstützt. Und wir werden die neueste stabile Version des nginx-Pakets verwenden, das aus dem offiziellen nginx-Repository heruntergeladen werden kann.
Nginx-Repository hinzufügen
Fügen Sie vor dem Hinzufügen des nginx-Repositorys das nginx-Schlüsselzeichen mit dem folgenden Befehl hinzu.
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Erstellen Sie nun mit dem vim-Editor eine neue nginx-Repository-Datei ‚nginx.list‘ im Verzeichnis ‚/etc/apt/sources.list.d‘.
vim /etc/apt/sources.list.d/nginx.list
Konfiguration unten einfügen.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Speichern und beenden.
Aktualisieren Sie jetzt die Ubuntu-Repositories.
sudo apt-get update
Das Nginx-Repository wurde hinzugefügt.
Nginx- und ngxbrotli-Quelldateien herunterladen
Jetzt werden wir die Nginx-Pakete mit dem apt-Befehl aus dem nginx-Repository herunterladen.
Gehen Sie in das Verzeichnis ‚/usr/local/src‘ und laden Sie die Nginx-Quelle mit dem folgenden apt-Befehl herunter.
cd /usr/local/src
sudo apt source nginx
Installieren Sie nun alle benötigten Paketabhängigkeiten für nginx.
sudo apt build-dep nginx -y
Klonen Sie nach Abschluss der Installation den Quellcode „ngx_brotli“ von GitHub.
git clone --recursive https://github.com/google/ngx_brotli.git
Nginx und ngx_brotli wurden heruntergeladen.
Erstellen Sie Nginx mit ngx_brotli-Unterstützung
Jetzt müssen wir die Standard-Build-Regel von Nginx bearbeiten, wir müssen ngx_brotli zur Build-Regel der Pakete hinzufügen.
Gehen Sie in das Verzeichnis ‚/usr/local/src/nginx-*‘ und bearbeiten Sie die Debian-‚rules‘-Konfiguration.
cd /usr/local/src/nginx-*/
vim debian/rules
Jetzt erhalten Sie zwei Build-Umgebungen für 'config.env.nginx ' und 'config.env.nginx_debug '. Fügen Sie die Option '--add-module=' für ngx_brotli zu beiden gebauten Umgebungen hinzu.
--add-module=/usr/local/src/ngx_brotli
Speichern und beenden.
Und wir sind bereit, das nginx-Paket mit ngx_brotli-Unterstützung zu kompilieren und zu bauen.
Führen Sie den folgenden dpkg-Befehl aus.
sudo dpkg-buildpackage -b -uc -us
Hinweis:
- -b:Baue nur Binärdateien, keine Quelldateien.
- -uc :Unsignierte .buildinfo- und .changes-Datei.
- -us:unsigniertes Quellpaket.
Wenn der Build abgeschlossen ist, erhalten Sie die nginx-*.deb-Pakete im Verzeichnis „/usr/local/src“, wie unten gezeigt.
ls -lah
Installieren Sie Nginx und aktivieren Sie die Brotli-Unterstützung
Der nginx-Build mit ngx_brotli ist abgeschlossen, installieren Sie die nginx-*.deb-Pakete mit dem dpkg-Befehl unten.
cd /usr/local/src/
sudo dpkg -i *.deb
Nginx mit der ngx_brotli-Unterstützung wurde installiert.
Gehen Sie nun in das Konfigurationsverzeichnis ‚/etc/nginx‘ und bearbeiten Sie die Konfigurationsdatei ‚nginx.conf‘.
cd /etc/nginx/
vim nginx.conf
Aktivieren Sie ngx_brotli auf nginx, indem Sie die Konfiguration unten im Abschnitt „http {...}“ hinzufügen.
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;
Speichern und beenden.
Testen Sie die nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt.
nginx -t
Die Brotli-Komprimierungsunterstützung wurde aktiviert.
Schritt 3 – Konfigurieren Sie den virtuellen Nginx-Host
In diesem Schritt werden wir versuchen, einen neuen virtuellen Host für den Domänennamen nginx.hakase-labs.io zu erstellen.
Hinweis:
- Die Brotli-Komprimierung unterstützt nur die HTTPS-Site, also stellen Sie sicher, dass Sie die Zertifikatsdateien für Ihren Domainnamen haben, oder Sie können kostenlose Letsencrypt-SSL-Zertifikate generieren.
Gehen Sie in das Konfigurationsverzeichnis ‚/etc/nginx‘ und erstellen Sie eine neue virtuelle Hostkonfiguration ‚brotli.conf‘.
cd /etc/nginx/
vim conf.d/brotli.conf
Fügen Sie dort die folgende Konfiguration des virtuellen nginx-Hosts ein.
# 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; } }
Speichern und beenden.
Hinweis:
- Ändern Sie den Domainnamen mit Ihrer eigenen Domain.
- Ändern Sie den SSL-Zertifikatspfad.
Testen Sie jetzt die nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den Dienst neu.
nginx -t
systemctl restart nginx
Der neue virtuelle nginx-Host wurde hinzugefügt.
Schritt 4 – Testen
Öffnen Sie Ihren Webbrowser und geben Sie den Domainnamen ein, meiner ist:
http://nginx.hakase-labs.io
Nun werden Sie auf die https-Verbindung umgeleitet. Klicken Sie mit der rechten Maustaste auf die Seite und klicken Sie auf "Element prüfen". '. Klicken Sie auf "Netzwerk". ' Tab und lade die Seite neu.
Klicken Sie auf das Anforderungsdetail und Sie erhalten alle Anforderungs- und Antwortheader vom Webserver, wie unten gezeigt.
Im Abschnitt „Antwort-Header“ sehen Sie „content-encoding:br“ für Brotli-Unterstützung.
Wenn Sie nun einen weiteren Test wünschen, können Sie den Curl-Befehl wie unten gezeigt verwenden.
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
Und Sie sehen das Ergebnis 'content-encoding:br' für die Brotli-Unterstützung.
Die Nginx-Installation mit Brotli Compression Support auf Ubuntu 18.04 wurde erfolgreich abgeschlossen.
Referenzen
- https://github.com/google/ngx_brotli
- https://www.babak.io/blog/