HTTP/2 basiert auf SPDY. Die HTTP/2-Spezifikation wurde im Mai 2015 als RFC 7540 veröffentlicht. HTTP/2 hat die gleichen Semantiken wie HTTP/1.1. Im Gegensatz zu HTTP/1.1 ist HTTP/2 jedoch binär und nicht textbasiert. HTTP/2 teilt Antworten in einen Header-Frame und einen Daten-Frame auf.
Verbesserungen gegenüber SPDY
HPACK-Komprimierung HPACK ist eine schnellere und intelligentere Methode zur Komprimierung von Headern und wurde speziell für diese Aufgabe entwickelt. Das ngx_http_spdy_module von Nginx deaktiviert standardmäßig die Header-Gzip-Komprimierung, da diese durch CRIME angegriffen werden kann.
Keine SSL/TLS erforderlich
Das HTTP/2-Protokoll selbst erfordert keine SSL/TLS-Verbindung. Alle großen Browserhersteller wie Firefox, Chrome und Opera geben jedoch an, dass sie TLS benötigen.
ALPN
Mit ALPN können der Browser und der Server von Beginn an eine HTTP/2-Verbindung aufbauen, anstatt erst eine HTTP/1.1-Verbindung herzustellen und dann eine HTTP/2-Verbindung auszuhandeln. ALPN stellt eine Verbesserung gegenüber NPN dar, welches von SPDY verwendet wird.
HTTP/2 auf Nginx aktivieren
Seit der Version 1.9.5 unterstützt Nginx HTTP/2. Daher musst du mindestens die Nginx-Version 1.9.5 installieren. Ich empfehle auch, die neueste Nginx-Version mit dem ngx_pagespeed-Modul zu kompilieren, aber das bleibt dir überlassen. Verwende den folgenden Link, um zu sehen, wie dies gemacht wird.
- Installiere die neueste Version von Nginx auf dem Ubuntu-Server
- Steigere die Geschwindigkeit deiner Seite, indem du die neueste Nginx-Version mit dem ngx_pagespeed-Modul auf dem Ubuntu-Server kompilierst
Ähnlich wie bei SPDY ist es sehr einfach, HTTP/2 auf Nginx zu aktivieren. Überprüfe, ob Nginx mit dem HTTP/2-Modul kompiliert wurde:
sudo nginx -V
Da deine Nginx-Version mindestens 1.9.5 ist, solltest du den folgenden Text in der Ausgabe sehen:
--with-http_v2_module
Konfiguriere dann die Server-Block-Datei:
sudo nano /etc/nginx/conf.d/deinedomain.conf
Füge im Server-Abschnitt nach <strong>listen 443 ssl</strong>
das Wort http2
hinzu:
server {
listen 443 ssl http2;
server_name www.deinebeispielwebseite.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
......
}
Speichere und schließe die Datei, dann lade die Nginx-Konfiguration neu:
sudo systemctl reload nginx
Wie du überprüfen kannst, ob HTTP/2 auf deiner Webseite funktioniert
Gehe zu https://tools.keycdn.com/http2-test und gib deine Domain ein. Cloudflare hat einen ausgezeichneten Beitrag über Tools zum Testen und Debuggen von HTTP/2.