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

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

Dieses Tutorial zeigt Ihnen, wie Sie das HTTP/2-Protokoll mit Nginx auf einem Debian 8-Server aktivieren, um das Laden von Webseiten zu beschleunigen. Es gibt 2 Anforderungen.

  • Nginx-Version 1.9.5 oder höher, erstellt mit OpenSSL 1.0.2
  • HTTPS aktiviert

Gehen wir diese nacheinander an.

Installieren von Nginx aus Jessie Backports Repo

ALPN (Application Layer Protocol Negotiation) ist eine TLS-Erweiterung, die es Servern ermöglicht, das HTTP/2-Protokoll mit Webbrowsern auszuhandeln. Ohne ALPN kann keine HTTP/2-Verbindung hergestellt werden, selbst wenn sowohl der Webserver als auch der Webbrowser HTTP/2 unterstützen. Die OpenSSL-Bibliothek unterstützt ALPN mit Version 1.0.2.

Debian 8 hat OpenSSL 1.0.1. Um Ihre OpenSSL-Version zu überprüfen, führen Sie

aus
openssl version

Bitte beachten Sie, dass OpenSSL 1.0.2 nicht auf dem System installiert werden muss. Wir benötigen nur Nginx 1.9.5 oder höher, das mit OpenSSL 1.0.2 erstellt wurde. Nginx hat in Version 1.9.5 Unterstützung für HTTP/2 hinzugefügt. Das standardmäßige Debian 8-Repo enthält Nginx 1.6.2. Glücklicherweise stellt Jessie Backports Repo Nginx 1.10.3 bereit, das mit OpenSSL 1.0.2l erstellt wurde.

Um dieses Repository hinzuzufügen, erstellen Sie eine Quelllistendatei.

sudo nano /etc/apt/sources.list.d/jessie-backports.list

Fügen Sie dieser Datei die folgende Zeile hinzu.

deb http://ftp.debian.org/debian jessie-backports main

Speichern und schließen Sie die Datei. Aktualisieren Sie dann den Paketindex und installieren Sie Nginx aus dem Jessie-Backports-Repository.

sudo apt update
sudo apt -t jessie-backports install nginx

Überprüfen Sie die Nginx-Version und konfigurieren Sie die Parameter.

sudo nginx -V

Ausgabe:

nginx version: nginx/1.10.3
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled

Das Nginx.org-Repo enthält die neueste Version von Nginx für Debian 8. Dieses Paket wurde jedoch gegen OpenSSL 1.0.1 erstellt, sodass ALPN nicht unterstützt wird.

SSL-Zertifikat unter Debian 8 installieren

Wir können ein kostenloses SSL-Zertifikat installieren, das von Let’s Encrypt ausgestellt wurde. Installieren Sie zuerst den Let’s Encrypt-Client (Certbot) auf Debian 8 aus dem Jessie Backports-Repo. Python-certbot-nginx ist das Nginx-Plugin für Certbot.

sudo apt install -t jessie-backports certbot python-certbot-nginx

Wenn Sie nun einen virtuellen Nginx-Host konfiguriert haben, verwenden Sie das Nginx-Plugin, um das SSL-Zertifikat wie unten zu erhalten und zu installieren

sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address

Erklärung:

  • --nginx :Nginx-Plugin verwenden
  • --agree-tos :Nutzungsbedingungen von Let’s Encrypt akzeptieren
  • --redirect :Den gesamten HTTP-Verkehr für den neu authentifizierten vhost automatisch auf HTTPS umleiten.
  • --staple-ocsp :Aktiviert OCSP-Heften
  • --must-staple :Fügt dem Zertifikat die Erweiterung OCSP Must Staple hinzu
  • --email :E-Mail-Adresse, die für die Registrierung und den Wiederherstellungskontakt verwendet wird

HTTP2-Protokoll aktivieren

Standardmäßig konfiguriert Certbot kein HTTP/2 für Nginx. Um HTTP/2 zu aktivieren, bearbeiten Sie Ihre virtuelle Nginx-Hostdatei. Suchen Sie die folgende Direktive.

listen 443 ssl;

Fügen Sie dann http2 wie unten hinzu.

listen 443 ssl http2;

Speichern und schließen Sie die Datei. Nginx neu laden.

sudo systemctl reload nginx

Test

Woher wissen Sie, dass Ihre Website tatsächlich das HTTP2-Protokoll verwendet?

  • Laden Sie in Firefox oder Google Chrome eine Seite Ihrer Website und drücken Sie dann Ctrl+Shift+I , um die Entwicklertools zu öffnen , klicken Sie auf Netzwerk Tab. Sie können das für Ihre Domain verwendete Protokoll sehen.
  • Sie können auch die HTTP/2- und SPDY Indicator-Erweiterung in Google Chrome installieren.
  • Installieren Sie die HTTP/2 Indicator-Erweiterung in Firefox.
  • Das Online-HTTP/2-Testtool von KeyCDN kann Ihnen sagen, ob HTTP/2 und ALPN auf Ihrer Website unterstützt werden.

Beachten Sie, dass Sie möglicherweise den Cache Ihres Browsers leeren müssen, da zwischengespeicherte Objekte möglicherweise fälschlicherweise mit dem HTTP/1.1-Protokoll gekennzeichnet sind.

So aktivieren Sie Server-Push

HTTP/2 verfügt über eine Funktion namens Server-Push , wodurch der Webserver Ressourcen senden kann, die der Webbrowser nicht angefordert hat, die jedoch zum Laden von Webseiten benötigt werden. Wenn beispielsweise der Webbrowser ein HTML-Dokument anfordert, weiß der Webserver, dass der Client die zugehörige CSS-Datei benötigt, und sendet sie zusammen mit dem HTML-Dokument, sodass der Webbrowser die Anforderung für CSS nicht mehr senden muss, also eine Runde Reise wird reduziert.

Hier verwende ich WordPress als Beispiel. Die folgenden Ressourcen werden üblicherweise für WordPress-Sites benötigt.

  • style.css:das Haupt-Stylesheet, das sich im Stammverzeichnis des Themenverzeichnisses befindet.
  • jquery.js:JQuery-Bibliothek
  • jquery-migrate.min.js:die alte JQuery
  • wp-embed.min.js:zum Einbetten von Videos

Um diese Ressourcen an Clients zu pushen, fügen Sie die folgenden Anweisungen in server hinzu Block. Ersetzen Sie Twentyseventeen durch Ihren eigenen WordPress-Theme-Namen.

http2_push /wp-content/themes/twentyseventeen/style.css;
http2_push /wp-includes/js/jquery/jquery.js;
http2_push /wp-includes/js/jquery/jquery-migrate.min.js;
http2_push /wp-includes/js/wp-embed.min.js;

Speichern und schließen Sie die Datei. Starten Sie dann Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl restart nginx

Beachten Sie, dass Sie den folgenden Code in functions.php hinzufügen müssen Datei, um die Versionsnummer aus WordPress CSS- und JavaScript-Dateien zu entfernen. Wenn WordPress aktualisiert wird, funktioniert Server-Push nicht, wenn diesen Dateien eine Versionsnummer hinzugefügt wird.

// Remove WP Version From Styles        
add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
// Remove WP Version From Scripts
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );

// Function to remove version numbers
function sdt_remove_ver_css_js( $src ) {
        if ( strpos( $src, 'ver=' ) )
                $src = remove_query_arg( 'ver', $src );
        return $src;
}
zurück

Server-Push testen

Laden Sie im Google Chrome-Browser Ihre Seite und drücken Sie dann Ctrl+Shift+I , um die Entwicklertools zu öffnen, und klicken Sie auf die Registerkarte Netzwerk. Drücken Sie F5, um neu zu laden. Wie Sie auf dem Screenshot unten sehen können, funktioniert Server-Push auf einer meiner Websites. Wenn Sie „aus dem Speicher-Cache“ sehen, klicken Sie mit der rechten Maustaste darauf, leeren Sie den Browser-Cache und laden Sie neu.

Verbesserungen

Das Certbot Nginx-Plugin ist noch nicht ausgereift. Ich habe B im SSL Labs-Test erhalten, nachdem ich das Nginx-Plugin verwendet hatte, weil schwache Schlüsselaustauschparameter verwendet wurden. Der SSL-Konfigurationsgenerator von Mozilla ist ein gutes Tool zum Erstellen moderner SSL-Konfigurationen.

Das ist es! Ich hoffe, dieses Tutorial hat Ihnen geholfen, HTTP/2 mit Nginx auf dem Debian 8-Server zu aktivieren. Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter.


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

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

  3. So erstellen Sie nginx mit dem Google PageSpeed-Modul unter Debian 8 (Jessie)

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

  5. So installieren Sie WonderCMS mit Nginx unter Debian 11

So sparen Sie Datenverkehr mit nginxs HttpGzipModule auf Debian Jessie

So konfigurieren Sie LAMP mit Debian 11

So konfigurieren Sie Samba Server mit Debian 11

So installieren Sie phpMyAdmin mit Nginx unter Debian 11

So installieren Sie Nginx mit PHP-FPM unter Debian 11

So installieren Sie Nginx in Debian 7