
🌐 Auch auf: English · Français · Español
Das Fernsehprogramm heute Abend war der reinste Müll, also habe ich mich stattdessen zum Basteln an den Server gesetzt. Was gibt es Schöneres, als den Abend mit einem Performance-Upgrade auf Protokollebene zu verbringen?
Heute geht es um etwas, das die Performance „unter der Haube“ verbessert – nämlich darum, wie Daten zwischen Browser und Webserver übertragen werden. Vielleicht hast du schon von HTTP/3 gehört – dem glänzenden neuen Transportprotokoll, das schnellere und zuverlässigere Seitenaufrufe verspricht. Benchmarks deuten auf Verbesserungen von etwa 10–15 % unter realen Bedingungen hin, besonders spürbar auf Mobilgeräten.
Warum wechseln?
Bisher lief mein WordPress-Blog auf dem guten alten Webserver Apache. Zuverlässig, ausgereift, aber beim Thema HTTP/3-Unterstützung leider immer noch hinterher. Dieser Standard ist längst nicht mehr „Bleeding Edge“ – er ist da, und die Browser (Chrome, Firefox, Safari, Edge) sprechen ihn bereits fließend. Apache dagegen lässt sich mit dem Aufholen Zeit.
Der logische nächste Schritt war also der Umstieg auf Nginx, das HTTP/3 unterstützt. Das hieß natürlich, meine Apache-Konfiguration in Nginx-Syntax zu übertragen – ein Nerd-Puzzle für sich.
Die Migrationsschritte
- Offizielles Nginx-Repository einbinden
Die Standard-Repos von Debian 12 enthalten noch keinen Build mit HTTP/3-Unterstützung. Für QUIC und HTTP/3 musste ich deshalb direkt das Repo des Herstellers hinzufügen. - Nginx installieren
Unspektakulär, aber entscheidend. Ohne das Hersteller-Repo landest du bei einem veralteten Paket. - Konfiguration migrieren
Apaches.conf-Syntax ≠ Nginx-Syntax. Dinge wie.htaccess-Regeln müssen von Hand inserver-Blöcke undlocation-Direktiven übersetzt werden. - Dienste umschalten
Apache stoppen, aus dem Autostart nehmen, dann Nginx aktivieren und starten. Du willst nicht, dass beide auf Port 80/443 lauschen. - PHP-FPM-Benutzer anpassen
Unter Apache war der Benutzerwww-data. Bei Nginx läuft der Prozess typischerweise alsnginx, also musste ich die Berechtigungen entsprechend anpassen. - Security-Header reparieren
Einer meiner gehärteten HTTP-Header vertrug sich nicht mit dem neuen Setup. Eine kleine Anpassung hat die Handshake-Probleme behoben. - Testen, testen, testen
Denn im Admin-Leben gilt: Wenn du es nicht mit drei verschiedenen Browsern und deinem Handy über ein wackeliges WLAN getestet hast, funktioniert es nicht wirklich.
Das Ergebnis
Mein Blog liefert seine Seiten jetzt fröhlich über HTTP/3 (QUIC) aus. Die Seiten laden gefühlt einen Tick flotter, vor allem beim Wechsel zwischen Beiträgen oder beim Neuladen über eine wacklige Verbindung. Eines dieser Upgrades, die du nicht bemerkst, wenn sie da sind – deren Fehlen du aber definitiv schmerzlich spürst.
Hier das Log meines NGINX-Webservers mit den Client-Anfragen. Man sieht jetzt deutlich, wie HTTP/3 im Einsatz ist:
79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /wp-content/uploads/2025/08/hangman.webp HTTP/3.0" 200 341646 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /wp-content/uploads/2025/08/vpn_broken.png HTTP/3.0" 200 927519 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /page/2/ HTTP/3.0" 200 13150 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/05/cropped-superman-1-1.png HTTP/3.0" 200 9032 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/chaos-300x300.webp HTTP/3.0" 200 12818 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/rocket-300x300.webp HTTP/3.0" 200 10792 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/bootme-300x200.webp HTTP/3.0" 200 15418 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/hangman-300x300.webp HTTP/3.0" 200 17030 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/05/rack-205x300.jpg HTTP/3.0" 200 19892 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2024/09/grapheneos-135x300.png HTTP/3.0" 200 22647 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2024/11/protectli-300x150.png HTTP/3.0" 200 22307 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:24 +0000] "GET /wp-content/cache/wpo-minify/1755704871/assets/wpo-minify-header-9e1552c9.min.css HTTP/3.0" 200 510477 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0)
Fazit
Hat sich der Aufwand gelohnt? Auf jeden Fall. Beim Umstieg von Apache auf Nginx ging es nicht nur um HTTP/3 – ich habe dadurch auch feinere Kontrolle über Caching, Reverse Proxying und die SSL/TLS-Konfiguration bekommen. Außerdem hat es diesen nächtlichen Nerd-Juckreiz gestillt.
Nächster Punkt auf meiner Liste: QUIC-Parameter tunen, damit Verbindungen noch schneller aufgebaut werden, und mit 0-RTT-Resumption experimentieren. Aber das ist eine Geschichte für einen anderen schlaflosen Abend.






