Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit Verwaltung

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:

FunktionHTTP/1.1HTTP/2
MultiplexingEine Anfrage pro VerbindungMehrere gleichzeitige Anfragen
Header-KomprimierungKlartext-HeaderHPACK-Komprimierung
Server PushNicht unterstütztUnterstützt
Binäres ProtokollTextbasiertBinäre Framing
VerbindungswiederverwendungBegrenztVollständig persistent
LatenzHöherDeutlich 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 sudo Privilegien 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 -y

Dieser 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 -y

Nginx-Service starten

Nach der Installation starten Sie den Nginx-Service sofort:

sudo systemctl start nginx

Nginx 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 nginx

Sie 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 status

Nginx 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 version

Sie 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 -y

Ihr 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.com

Certbot wird:

  1. Domainbesitz über eine HTTP-Challenge überprüfen
  2. Das Zertifikat von Let’s Encrypt ausstellen
  3. Ihre Nginx-Konfiguration automatisch ändern, um das Zertifikat zu verwenden
  4. 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-run

Wenn 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/default

Wenn Sie einen benutzerdefinierten Serverblock für Ihre Domain erstellt haben (empfohlen), öffnen Sie stattdessen diese Datei:

sudo nano /etc/nginx/sites-available/your_domain.com

Aktualisieren 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 -t

Ein erfolgreicher Test erzeugt:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn 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 nginx

Alternativ können Sie auch einen Reload ohne Ausfallzeit durchführen (dieser wendet Konfigurationsänderungen an, ohne aktive Verbindungen zu unterbrechen):

sudo systemctl reload nginx

Fü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.com

Suchen Sie nach dem Antwortheader:

HTTP/2 200

Wenn Sie HTTP/2 200 sehen, funktioniert HTTP/2 korrekt.

Methode 2: Verwendung des OpenSSL-Befehls

openssl s_client -connect your_domain.com:443 -alpn h2

Suchen Sie in der Ausgabe nach:

ALPN protocol: h2

h2 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

  1. Öffnen Sie Ihre Website in Google Chrome oder Mozilla Firefox
  2. Drücken Sie F12, um die Entwicklertools zu öffnen
  3. Navigieren Sie zur Registerkarte Netzwerk
  4. Laden Sie die Seite neu (F5 oder Ctrl+R)
  5. Klicken Sie mit der rechten Maustaste auf einen Spaltenkopf in der Anfrageliste und aktivieren Sie die Spalte Protokoll
  6. Sie sollten h2 als 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 Direktiven ssl_certificate und ssl_certificate_key entsprechend.

Port 443 nicht erreichbar

  • Ursache: Firewall blockiert HTTPS-Verkehr.
  • Lösung: Führen Sie sudo ufw allow 443/tcp aus und überprüfen Sie mit sudo 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 A zur 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.