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 SSL-Konfiguration, Server-Block-Optimierung bis zur Live-Überprüfung.
> 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.
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 | Klartext-Header | HPACK-Komprimierung |
| Server Push | Nicht unterstützt | Unterstützt |
| Binäres Protokoll | Textbasiert | Binäre Framing |
| 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 Abrufen eines SSL-Zertifikats ein obligatorischer Schritt in dieser Anleitung. 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 Sie folgendes eingerichtet haben:
- Ein Server mit Ubuntu 20.04 LTS oder Ubuntu 22.04 LTS (die Schritte sind für beide nahezu identisch)
- Ein Benutzer ohne Root-Rechte mit
sudoPrivilegien 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 Registration registrieren und sie innerhalb weniger Minuten auf Ihren Server verweisen.
Schritt 1 — Aktualisieren Sie den System-Paketindex
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
Nach der Installation starten Sie den Nginx-Service sofort:
sudo systemctl start nginxNginx aktivieren, um beim Booten automatisch zu starten
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 dieses Setup 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, denen alle großen Browser vertrauen. 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 HTTP-Verkehr zu HTTPS umgeleitet werden soll, wählen Sie Option 2 (Umleiten) — dies ist die empfohlene Wahl.
Automatische Zertifikatverlängerung ü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 Verlängerungsprozess mit einem Testlauf:
sudo certbot renew --dry-runWenn keine Fehler angezeigt werden, ist die automatische Verlängerung korrekt konfiguriert.
> Tipp: Für Produktionsumgebungen mit mehreren Domains oder Wildcard-Zertifikaten sollten Sie einen Dedicated Server in Betracht ziehen, um 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 explizit in der Nginx-Serverblock-Konfiguration aktivieren.
Öffnen Sie die Nginx-Konfigurationsdatei
Die Standard-Site-Konfiguration befindet sich unter:
sudo nano /etc/nginx/sites-available/defaultWenn Sie einen benutzerdefinierten Serverblock für Ihre Domain erstellt haben (empfohlen), öffnen Sie stattdessen diese Datei:
sudo nano /etc/nginx/sites-available/your_domain.comAktualisieren Sie den Serverblock, 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 — Optimieren Sie Ihre Nginx HTTP/2-Konfiguration
Das einfache Aktivieren von HTTP/2 ist ein guter Anfang, aber zusätzliche Optimierungen stellen sicher, dass Sie maximale Leistung aus Ihrem Setup herausholen.
Empfohlene SSL- und Leistungseinstellungen
Fügen Sie die folgenden Direktiven in Ihrem server Block hinzu oder überprüfen Sie diese:
# 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 — Testen Sie die Nginx-Konfiguration
Starten Sie Nginx niemals neu, ohne vorher 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 (dieser wendet Konfigurationsänderungen an, 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
Nach dem Neustart von Nginx bestätigen Sie, 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 Antwortheader:
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 der ALPN-Identifier 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-Testtools
Besuchen Sie https://tools.keycdn.com/http2-test und geben Sie Ihre Domain ein. Das Tool bestätigt, ob HTTP/2 aktiv ist, und liefert zusätzliche Details zur TLS-Konfiguration Ihres Servers.
Fehlerbehebung häufiger Probleme
HTTP/2 wird im Browser nicht angezeigt, obwohl konfiguriert
- Ursache: Browser hat eine ältere HTTP/1.1-Verbindung zwischengespeichert.
- Lösung: Browser-Cache und Cookies löschen oder in einem privaten/Inkognito-Fenster testen.
nginx -t gibt SSL-Zertifikatsfehler zurück
- Ursache: Falsche Zertifikatspfade in der Konfigurationsdatei.
- Lösung: Überprüfen Sie die genauen Pfade mit
sudo ls /etc/letsencrypt/live/your_domain.com/und aktualisieren Sie die Direktivenssl_certificateundssl_certificate_keyentsprechend.
Port 443 nicht erreichbar
- Ursache: Firewall blockiert HTTPS-Verkehr.
- Lösung: Führen Sie
sudo ufw allow 443/tcpaus und überprüfen Sie mitsudo ufw status.
Certbot schlägt bei der Domänenvalidierung fehl
- Ursache: DNS A-Eintrag noch nicht propagiert oder Port 80 ist blockiert.
- Lösung: Überprüfen Sie, dass Ihre Domäne mit
dig your_domain.com Azur korrekten IP aufgelöst wird. Stellen Sie sicher, dass Port 80 für die ACME HTTP-Abfrage offen ist.
unknown directive "http2" Fehler in Nginx
- Ursache: Nginx-Version ist zu alt (vor 1.9.5) oder wurde ohne HTTP/2-Unterstützung kompiliert.
- Lösung: Aktualisieren Sie Nginx. Auf Ubuntu 20.04+ unterstützt die Standard-Repository-Version HTTP/2. Sie können auch das offizielle Nginx PPA hinzufügen:
sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.
Fazit
Sie haben Nginx mit vollständiger HTTP/2-Unterstützung auf Ubuntu erfolgreich installiert. Hier ist eine Zusammenfassung aller durchgeführten Schritte:
- ✅ Nginx installiert und als Systemdienst aktiviert
- ✅ Ein kostenloses, automatisch erneuerbares SSL-Zertifikat über Let's Encrypt und Certbot erhalten
- ✅ Den Nginx-Serverblock mit der
http2-Direktive konfiguriert - ✅ TLS-Härtung, OCSP-Stapling, HSTS und Gzip-Kompression angewendet
- ✅ Die Konfiguration getestet und verifiziert, dass HTTP/2 aktiv ist
Die Aktivierung von HTTP/2 ist eine der wirkungsvollsten und gleichzeitig am wenigsten aufwendigen Optimierungen, die Sie an einem Webserver durchführen können. In Kombination mit starken TLS-Einstellungen und korrekten Caching-Headern verbessert dies erheblich die Seitenladezeiten, Core Web Vitals-Scores und letztendlich die Suchmaschinen-Rankings Ihrer Website.
Halten Sie Ihren Stack aktuell: Führen Sie regelmäßig sudo apt update && sudo apt upgrade aus, um Nginx, OpenSSL und Certbot mit den neuesten Sicherheits-Patches auf dem neuesten Stand zu halten.
Verbessern Sie Ihre Server-Performance weiter
Die Performance-Gewinne von HTTP/2 sind am stärksten auf schneller, zuverlässiger Infrastruktur. Wenn Sie derzeit auf Shared Hosting sind und auf Ressourcenlimits stoßen, erwägen Sie ein Upgrade auf einen VPS Hosting-Plan für dedizierte Ressourcen und vollständigen Root-Zugriff. Für Anwendungen mit hohem Traffic bieten Dedicated Server unvergleichliche Raw-Performance. Sie können Ihre Serverumgebung auch einfach mit einem VPS mit cPanel verwalten, wenn Sie eine grafische Oberfläche der Befehlszeile vorziehen.
Unabhängig von Ihren Infrastrukturanforderungen bietet AlexHost die Plattform, um Nginx, HTTP/2 und Ihren gesamten Web-Stack mit maximaler Effizienz auszuführen.
bei allen Hosting-Diensten