Wie richte ich HTTP/2-Unterstützung in NGINX ein?
- Einleitung
- Voraussetzungen
- NGINX-Konfiguration anpassen
- HTTP/2 überprüfen
- Weiterführende Optimierungen
- Zusammenfassung
Einleitung
HTTP/2 ist die neuere Version des HTTP-Protokolls, die im Vergleich zu HTTP/1.1 eine verbesserte Leistung und Effizienz bei der Übertragung von Webinhalten bietet. Sie ermöglicht Multiplexing, Header-Kompression und Server-Push, was besonders bei Websites mit vielen Ressourcen zu schnelleren Ladezeiten führt. Um HTTP/2 in NGINX zu aktivieren, sind einige Anpassungen in der Konfiguration notwendig, insbesondere im Zusammenhang mit SSL/TLS, da HTTP/2 in der Praxis meist nur über HTTPS verwendet wird.
Voraussetzungen
Um HTTP/2 in NGINX nutzen zu können, ist eine aktuelle Version von NGINX erforderlich, die HTTP/2 unterstützt. NGINX unterstützt HTTP/2 ab Version 1.9.5 aufwärts. Zudem wird zwingend HTTPS benötigt, das heißt, ein gültiges SSL/TLS-Zertifikat muss vorliegen. Für Testzwecke kann auch ein selbstsigniertes Zertifikat genutzt werden, für den produktiven Einsatz empfiehlt sich jedoch ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle.
NGINX-Konfiguration anpassen
Die Konfiguration von NGINX erfolgt über die Datei nginx.conf oder über separate Server-Block-Dateien, die in der Regel unter /etc/nginx/sites-available/ liegen. Wichtig ist, den Server-Block, der HTTPS bedient, zu bearbeiten. Dort muss im listen-Direktiv das Attribut http2 hinzugefügt werden, um HTTP/2 zu aktivieren. Ein Beispiel für eine solche Listen-Direktive lautet:
listen 443 ssl http2;Diese Zeile sagt NGINX, auf Port 443 (standardmäßig für HTTPS) SSL zu verwenden und HTTP/2 zu aktivieren.
Zusätzlich stellt man sicher, dass die SSL-Zertifikate korrekt eingebunden sind, etwa so:
ssl_certificate /etc/ssl/certs/meinzertifikat.pem;ssl_certificate_key /etc/ssl/private/meinschluessel.key;Ein vollständiges Beispiel eines Server-Blocks mit HTTP/2-Unterstützung könnte folgendermaßen aussehen:
server { listen 443 ssl http2; server_name www.meinedomain.de; ssl_certificate /etc/ssl/certs/meinzertifikat.pem; ssl_certificate_key /etc/ssl/private/meinschluessel.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; }}HTTP/2 überprüfen
Nachdem die Konfiguration editiert wurde, sollte die NGINX-Konfiguration mit nginx -t auf Fehler geprüft werden. Wenn alles korrekt ist, muss NGINX neu geladen oder neu gestartet werden, damit die Änderungen wirksam werden:
sudo systemctl reload nginxUm zu überprüfen, ob HTTP/2 wirklich aktiv ist, kann man Tools wie SSL Labs verwenden oder in modernen Browsern in den Entwickler-Werkzeugen unter Netzwerk (Network) nachsehen, ob der y der Verbindungen als "h2" (HTTP/2) angezeigt wird.
Weiterführende Optimierungen
Neben der reinen Aktivierung von HTTP/2 kann es sinnvoll sein, die TLS-Einstellungen und Sicherheitsheader zu optimieren, um die Performance und Sicherheit der Website weiter zu verbessern. Beispielsweise kann man zusätzliche Header wie Strict-Transport-Security setzen oder TLS 1.3 bevorzugen, sofern vom Server und den Clients unterstützt.
Zusammenfassung
Um HTTP/2 in NGINX zu nutzen, ist vor allem sicherzustellen, dass eine aktuelle NGINX-Version und ein SSL-Zertifikat vorhanden sind. Die entscheidende Änderung in der NGINX-Konfiguration besteht darin, bei der HTTPS-Listener-Deklaration das http2-Flag hinzuzufügen. Danach sollte die Konfiguration getestet und NGINX neu geladen werden. Mit dieser Anpassung profitieren Webseiten von den zahlreichen Vorteilen des HTTP/2-Protokolls.
