15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen
01.11.2024

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

  1. Was ist HTTP/2 und warum ist es wichtig?
  2. Voraussetzungen
  3. Schritt 1 – Systempaketindex aktualisieren
  4. Schritt 2 – Nginx installieren
  5. Schritt 3 – OpenSSL installieren
  6. Schritt 4 – Kostenloses SSL-Zertifikat mit Let’s Encrypt erhalten
  7. Schritt 5 – Nginx für HTTP/2 konfigurieren
  8. Schritt 6 – Nginx HTTP/2-Konfiguration optimieren
  9. Schritt 7 – Nginx-Konfiguration testen
  10. Schritt 8 – Nginx neu starten und Änderungen anwenden
  11. Schritt 9 – Überprüfen, ob HTTP/2 aktiv ist
  12. Behebung häufiger Probleme
  13. 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:

FunktionHTTP/1.1HTTP/2
MultiplexingEine Anfrage pro VerbindungMehrere gleichzeitige Anfragen
Header-KomprimierungUnverschlüsselte HeaderHPACK-Komprimierung
Server PushNicht unterstütztUnterstützt
Binäres ProtokollTextbasiertBinäre Rahmung
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 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 sudo Berechtigungen 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 -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

Starten Sie den Nginx-Service sofort nach der Installation:

sudo systemctl start nginx

Nginx 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 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 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 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, 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 -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 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-run

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

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

Aktualisieren 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 -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 (der Konfigurationsänderungen anwendet, 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

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

Suchen Sie nach dem Response-Header:

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

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

15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen