Wie man Nginx mit HTTP/2-Unterstützung auf Ubuntu installiert (Vollständiger Leitfaden)
Nginx ist einer der am weitesten verbreiteten Webserver der Welt und wird für seine außergewöhnliche Leistung, seinen geringen Speicherverbrauch und seine Fähigkeit, Tausende gleichzeitiger Verbindungen zu verarbeiten, geschätzt. In Kombination mit HTTP/2 wird Nginx zu einer noch leistungsfähigeren Plattform – mit Multiplexing von Anfragen, Header-Komprimierung, Server Push und drastisch reduzierten Seitenladezeiten.
Dieser umfassende Leitfaden führt Sie durch jeden erforderlichen Schritt zur Installation von Nginx mit vollständiger HTTP/2-Unterstützung auf Ubuntu 20.04 und Ubuntu 22.04 LTS, von der Ersteinrichtung über die SSL-Konfiguration bis zur Optimierung von Server-Blöcken und Live-Verifizierung.
> Für wen ist dieser Leitfaden? Systemadministratoren, Entwickler und Website-Besitzer, die die Web-Performance auf einem Linux-Server maximieren möchten. Wenn Sie Ihre Website auf einem VPS Hosting-Plan oder einem Dedicated Server betreiben, gilt dieses Tutorial direkt für Ihre Umgebung.
Inhaltsverzeichnis
- Was ist HTTP/2 und warum ist es wichtig?
- Voraussetzungen
- Schritt 1 – Systempaketindex aktualisieren
- Schritt 2 – Nginx installieren
- Schritt 3 – OpenSSL installieren
- Schritt 4 – Kostenloses SSL-Zertifikat mit Let’s Encrypt erhalten
- Schritt 5 – Nginx für HTTP/2 konfigurieren
- Schritt 6 – Nginx HTTP/2-Konfiguration optimieren
- Schritt 7 – Nginx-Konfiguration testen
- Schritt 8 – Nginx neu starten und Änderungen anwenden
- Schritt 9 – Überprüfen, ob HTTP/2 aktiv ist
- Behebung häufiger Probleme
- Fazit
Was ist HTTP/2 und warum ist es wichtig?
HTTP/2 ist die zweite Hauptversion des Hypertext Transfer Protocol, standardisiert in RFC 7540. Es wurde entwickelt, um die Leistungsbeschränkungen von HTTP/1.1 zu beheben, das seit 1997 in Gebrauch ist.
Wichtigste Vorteile von HTTP/2 gegenüber HTTP/1.1:
| Funktion | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexing | Eine Anfrage pro Verbindung | Mehrere gleichzeitige Anfragen |
| Header-Komprimierung | Unverschlüsselte Header | HPACK-Komprimierung |
| Server Push | Nicht unterstützt | Unterstützt |
| Binäres Protokoll | Textbasiert | Binäre Rahmung |
| Verbindungswiederverwendung | Begrenzt | Vollständig persistent |
| Latenz | Höher | Deutlich reduziert |
Für Website-Besitzer bedeutet die Aktivierung von HTTP/2 direkt schnellere Seitenladezeiten, bessere Core Web Vitals-Scores und verbesserte SEO-Rankings – da Google die Seitengeschwindigkeit als Ranking-Signal nutzt.
> Wichtig: HTTP/2 erfordert HTTPS (TLS/SSL). Sie können HTTP/2 nicht über eine unverschlüsselte Verbindung in einem modernen Browser ausführen. Deshalb ist das Erhalten eines SSL-Zertifikats ein obligatorischer Schritt in diesem Leitfaden. Wenn Sie ein vertrauenswürdiges Zertifikat für Ihre Domain benötigen, bietet AlexHost SSL-Zertifikate für alle Anwendungsfälle an.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Folgendes vorhanden ist:
- Ein Server mit Ubuntu 20.04 LTS oder Ubuntu 22.04 LTS (die Schritte sind für beide nahezu identisch)
- Ein Nicht-Root-Benutzer mit
sudoBerechtigungen oder direkter Root-Zugriff - Ein registrierter Domainname, der über einen A-Record auf die IP-Adresse Ihres Servers verweist
- Ports 80 und 443 offen in Ihrer Firewall (UFW oder iptables)
- Grundkenntnisse der Linux-Befehlszeile
Wenn Sie noch keine Domain haben, können Sie eine direkt über AlexHost Domain-Registrierung registrieren und innerhalb von Minuten auf Ihren Server verweisen.
Schritt 1 – Systempaketindex aktualisieren
Beginnen Sie immer damit, Ihren Paketindex zu aktualisieren, um sicherzustellen, dass Sie die neuesten verfügbaren Versionen aller Software installieren:
sudo apt update && sudo apt upgrade -yDieser Befehl aktualisiert die lokale Paketliste und aktualisiert alle veralteten Pakete, die bereits auf Ihrem System installiert sind.
Schritt 2 – Nginx installieren
Nginx-Paket installieren
Die Standard-Repositories von Ubuntu enthalten eine stabile Version von Nginx. Installieren Sie es mit:
sudo apt install nginx -yNginx-Service starten
Starten Sie den Nginx-Service sofort nach der Installation:
sudo systemctl start nginxNginx so konfigurieren, dass es beim Booten automatisch startet
Stellen Sie sicher, dass Nginx bei jedem Neustart des Servers automatisch startet:
sudo systemctl enable nginxÜberprüfen Sie, ob Nginx läuft
Bestätigen Sie, dass der Service aktiv und läuft:
sudo systemctl status nginxSie sollten eine Ausgabe ähnlich wie folgt sehen:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since ...Nginx durch die Firewall zulassen
Wenn UFW auf Ihrem Server aktiv ist, erlauben Sie HTTP- und HTTPS-Traffic:
sudo ufw allow 'Nginx Full'
sudo ufw statusNginx Full öffnet sowohl Port 80 (HTTP) als auch Port 443 (HTTPS), die beide für diese Einrichtung erforderlich sind.
Schritt 3 – OpenSSL installieren
HTTP/2 hängt von TLS ab, das wiederum von OpenSSL abhängt. Installieren Sie es, um sicherzustellen, dass alle kryptografischen Abhängigkeiten verfügbar sind:
sudo apt install openssl -yÜberprüfen Sie die installierte Version:
openssl versionSie sollten eine Ausgabe wie OpenSSL 3.0.x oder ähnlich sehen. Jede Version über 1.0.2 unterstützt vollständig die Cipher-Suites, die für HTTP/2 erforderlich sind.
Schritt 4 – Kostenloses SSL-Zertifikat mit Let’s Encrypt erhalten
Let’s Encrypt bietet kostenlose, automatisch erneuerbare SSL/TLS-Zertifikate, die von allen großen Browsern vertraut werden. Der Certbot-Client macht den gesamten Prozess unkompliziert.
Certbot und das Nginx-Plugin installieren
sudo apt install certbot python3-certbot-nginx -yIhr SSL-Zertifikat anfordern
Ersetzen Sie your_domain.com durch Ihren tatsächlichen registrierten Domainnamen:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot wird:
- Domainbesitz über eine HTTP-Challenge überprüfen
- Das Zertifikat von Let’s Encrypt ausstellen
- Ihre Nginx-Konfiguration automatisch ändern, um das Zertifikat zu verwenden
- HTTPS-Umleitungen von HTTP einrichten
Folgen Sie den interaktiven Eingabeaufforderungen. Wenn Sie gefragt werden, ob Sie HTTP-Traffic zu HTTPS umleiten möchten, wählen Sie Option 2 (Umleiten) – dies ist die empfohlene Wahl.
Automatische Zertifikatserneuerung überprüfen
Let’s Encrypt-Zertifikate verfallen nach 90 Tagen. Certbot installiert einen Cron-Job oder systemd-Timer, um sie automatisch zu erneuern. Testen Sie den Erneuerungsprozess mit einem Testlauf:
sudo certbot renew --dry-runWenn keine Fehler angezeigt werden, ist die automatische Erneuerung korrekt konfiguriert.
> Tipp: Für Produktionsumgebungen mit mehreren Domains oder Wildcard-Zertifikaten sollten Sie einen Dedicated Server in Betracht ziehen, um die vollständige Kontrolle über Ihre SSL-Infrastruktur zu haben.
Schritt 5 – Nginx für HTTP/2 konfigurieren
Jetzt, da SSL vorhanden ist, müssen Sie HTTP/2 in der Nginx-Server-Block-Konfiguration explizit aktivieren.
Öffnen Sie die Nginx-Konfigurationsdatei
Die Standard-Site-Konfiguration befindet sich unter:
sudo nano /etc/nginx/sites-available/defaultWenn Sie einen benutzerdefinierten Server-Block für Ihre Domain erstellt haben (empfohlen), öffnen Sie stattdessen diese Datei:
sudo nano /etc/nginx/sites-available/your_domain.comAktualisieren Sie den Server-Block, um HTTP/2 zu aktivieren
Suchen Sie die listen 443 ssl; Direktive. Certbot wird diese automatisch hinzugefügt haben. Ändern Sie sie, um http2 einzuschließen:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com www.your_domain.com;
# SSL Certificate paths (set by Certbot)
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/your_domain.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP to HTTPS redirect block
server {
listen 80;
listen [::]:80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}Die kritische Änderung befindet sich in der listen Zeile: Das Hinzufügen von http2 nach ssl aktiviert das HTTP/2-Protokoll für diesen virtuellen Host.
Speichern und beenden
Drücken Sie CTRL + X, dann Y, dann Enter, um die Datei zu speichern und den nano-Editor zu beenden.
Schritt 6 – Nginx HTTP/2-Konfiguration optimieren
Das bloße Aktivieren von HTTP/2 ist ein guter Anfang, aber das Anwenden zusätzlicher Optimierungen stellt sicher, dass Sie maximale Leistung aus Ihrer Einrichtung herausholen.
Empfohlene SSL- und Leistungseinstellungen
Fügen Sie die folgenden Direktiven in Ihrem server Block hinzu oder überprüfen Sie sie:
# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;
# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;> Hinweis zu HTTP/2 und Gzip: HTTP/2 verwendet seine eigene HPACK-Header-Komprimierung, aber das Aktivieren von Gzip für Response-Bodies bietet immer noch erhebliche Bandbreiteneinsparungen für textbasierte Assets.
Schritt 7 – Nginx-Konfiguration testen
Starten Sie Nginx niemals neu, ohne zuvor die Konfiguration auf Syntaxfehler zu testen. Eine falsch konfigurierte Datei kann Ihren gesamten Webserver lahmlegen.
Führen Sie den integrierten Konfigurationstest aus:
sudo nginx -tEin erfolgreicher Test erzeugt:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulWenn Sie Fehler sehen, überprüfen Sie die Ausgabe sorgfältig. Die Fehlermeldung enthält den Dateinamen und die Zeilennummer, in der das Problem erkannt wurde.
Schritt 8 – Nginx neu starten und Änderungen anwenden
Sobald der Konfigurationstest erfolgreich ist, starten Sie Nginx neu, um alle Änderungen anzuwenden:
sudo systemctl restart nginxAlternativ können Sie auch einen Reload ohne Ausfallzeit durchführen (der Konfigurationsänderungen anwendet, ohne aktive Verbindungen zu unterbrechen):
sudo systemctl reload nginxFür die HTTP/2-Aktivierung wird speziell ein vollständiger Neustart empfohlen, um sicherzustellen, dass die neuen Protokolleinstellungen vollständig initialisiert werden.
Schritt 9 – Überprüfen Sie, ob HTTP/2 aktiv ist
Bestätigen Sie nach dem Neustart von Nginx, dass HTTP/2 tatsächlich an Clients bereitgestellt wird, indem Sie eine der folgenden Methoden verwenden.
Methode 1: Verwendung von curl
Das curl Befehlszeilentool kann die verwendete Protokollversion melden:
curl -I --http2 https://your_domain.comSuchen Sie nach dem Response-Header:
HTTP/2 200Wenn Sie HTTP/2 200 sehen, funktioniert HTTP/2 korrekt.
Methode 2: Verwendung des OpenSSL-Befehls
openssl s_client -connect your_domain.com:443 -alpn h2Suchen Sie in der Ausgabe nach:
ALPN protocol: h2h2 ist die ALPN-Kennung für HTTP/2. Wenn Sie dies sehen, bewirbt Ihr Server HTTP/2-Unterstützung während des TLS-Handshakes korrekt.
Methode 3: Verwendung von Browser-Entwicklertools
- Öffnen Sie Ihre Website in Google Chrome oder Mozilla Firefox
- Drücken Sie
F12, um die Entwicklertools zu öffnen - Navigieren Sie zur Registerkarte Netzwerk
- Laden Sie die Seite neu (
F5oderCtrl+R) - Klicken Sie mit der rechten Maustaste auf einen Spaltenkopf in der Anfrageliste und aktivieren Sie die Spalte Protokoll
- Sie sollten
h2als Protokoll für die Anfragen Ihrer Domain aufgelistet sehen
Methode 4: Verwendung eines Online-HTTP/2-Test-Tools
Besuchen Sie https://tools.keycdn.com/http2-test und geben Sie Ihre Domain ein. Das Tool bestätigt, ob HTTP/2 aktiv ist, und bietet zusätzliche Details zur TLS-Konfiguration Ihres Servers.
Behebung häufiger Probleme
HTTP/2 wird im Browser nicht angezeigt, obwohl es konfiguriert ist
- Ursache: Browser hat eine ältere HTTP/1.1-Verbindung zwischengespeichert.
- Lösung: Löschen Sie den Browser-Cache und Cookies, oder testen Sie in einem privaten/Inkognito-Fenster.
