Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

HTTP/3 i QUIC — konfiguracja na Nginx i Caddy

Opublikowano: 10 kwietnia 2026 · Kategoria: Hosting / Wydajność

HTTP/3 to trzecia główna wersja protokołu HTTP, oparta na QUIC (Quick UDP Internet Connections) zamiast TCP. Eliminuje klasyczny problem "head-of-line blocking", przyspiesza ładowanie stron na wolnych połączeniach i wspiera migrację połączeń bez zrywania sesji. Oto jak go uruchomić.

Ewolucja HTTP: 1.1 → 2 → 3

Cecha HTTP/1.1 HTTP/2 HTTP/3
Transport TCP TCP UDP (QUIC)
Multiplexing Brak (pipelining) Tak (strumienie) Tak (niezależne strumienie)
Head-of-line blocking Tak (poziom połączenia) Tak (poziom TCP) Nie
TLS Opcjonalne (TLS 1.2/1.3) Wymagane (TLS 1.2+) Wbudowane TLS 1.3
Handshake RTT 1-3 RTT 1-2 RTT 0-1 RTT (0-RTT resumption)
Connection migration Nie Nie Tak (zmiana IP bez przerwy)

Kluczowa różnica: QUIC działa na UDP, więc każdy strumień HTTP/3 jest niezależny. Utrata pakietu w jednym strumieniu (np. obraz) nie wstrzymuje pobierania innych zasobów (CSS, JS) — tak jak to dzieje się w HTTP/2 na TCP.

Opcja 1: Caddy — HTTP/3 bez konfiguracji

Caddy to najprostszy sposób na HTTP/3. Od wersji 2.5 QUIC jest domyślnie włączony — wystarczy skonfigurować domenę z HTTPS:

# Instalacja Caddy (Ubuntu/Debian)
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy
# /etc/caddy/Caddyfile
example.com {
    root * /var/www/html
    file_server

    # HTTP/3 jest włączone automatycznie — nic nie musisz konfigurować!
    # Caddy dodaje nagłówek Alt-Svc: h3=":443"; ma="2592000"

    # Opcjonalnie: wymuś HTTP/3 przez nagłówek
    header Alt-Svc `h3=":443"; ma=86400`
}
systemctl reload caddy

# Weryfikacja
curl -sI https://example.com | grep -i alt-svc
# Oczekiwane: Alt-Svc: h3=":443"; ma=2592000

Ważne: QUIC używa UDP port 443. Upewnij się, że firewall przepuszcza UDP 443 (nie tylko TCP): ufw allow 443/udp.

Opcja 2: Nginx z QUIC (mainline >= 1.25.0)

Od Nginx 1.25.0 (mainline) wbudowana jest obsługa HTTP/3 i QUIC bez patchowania. Wymaga OpenSSL 3.x lub BoringSSL:

# Instalacja Nginx mainline (Ubuntu)
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list

apt update && apt install nginx

# Sprawdzenie wersji i obsługi HTTP/3
nginx -V 2>&1 | grep -o 'with-http_v3_module'
# /etc/nginx/sites-available/http3-example.conf

server {
    listen 443 ssl;
    listen 443 quic reuseport;  # HTTP/3 na UDP
    listen [::]:443 ssl;
    listen [::]:443 quic reuseport;

    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.3;  # HTTP/3 wymaga TLS 1.3

    # Informuj przeglądarkę o HTTP/3
    add_header Alt-Svc 'h3=":443"; ma=86400';
    add_header QUIC-Status $quic;  # "h3" jeśli aktywne

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

# Przekierowanie HTTP → HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}
nginx -t && systemctl reload nginx

# Sprawdzenie logów HTTP/3 — dodaj $quic do log_format
# log_format main '$remote_addr [$time_local] "$request" $status $quic';
# access_log /var/log/nginx/access.log main;

Konfiguracja firewalla — UDP 443 obowiązkowe

# UFW
ufw allow 443/tcp
ufw allow 443/udp  # QUIC wymaga UDP!

# iptables (alternatywnie)
iptables -A INPUT -p udp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Uwaga na dostawców chmury: AWS, GCP i Azure mają osobne Security Groups / Firewall rules. Musisz dodać regułę UDP 443 w panelu dostawcy, nie tylko w systemowym UFW.

Testowanie HTTP/3

# curl z HTTP/3 (wymaga curl 7.66+ z obsługą QUIC)
curl --http3 -I https://example.com

# Sprawdź nagłówek Alt-Svc
curl -sI https://example.com | grep Alt-Svc

# Chrome DevTools — weryfikacja
# 1. F12 → Network → przeładuj stronę
# 2. Kliknij żądanie → Headers → "protocol: h3"

# chrome://net-internals/#quic — aktywne sesje QUIC
# chrome://net-internals/#http2 — wszystkie protokoły

# Narzędzie online
# https://http3check.net/?host=example.com

Kiedy HTTP/3 najbardziej pomaga?

  • Duże liczby zasobów — strony z 50+ żądaniami JS/CSS/obrazów — brak HoL blockingu przyspiesza ich równoległe pobieranie.
  • Użytkownicy mobilni — słabe, stratne połączenia 4G/5G — QUIC lepiej radzi sobie z utraconymi pakietami.
  • Aplikacje real-time — czat, streaming — 0-RTT resumption skraca czas nawiązywania sesji po przerwie.
  • Globalna publiczność — użytkownicy daleko od serwera — mniej RTT handshake.
  • Słabsza sieć — np. publiczne WiFi — QUIC jest bardziej odporny na packet loss niż TCP.

Kiedy zysk jest mały: serwer lokalny, stabilna sieć, mała liczba zasobów na stronie, już skonfigurowane HTTP/2 Push lub preload. W tych przypadkach HTTP/3 daje <5% poprawy.

LiteSpeed — HTTP/3 gotowe na hostingu

Jeśli używasz hostingu współdzielonego z LiteSpeed (np. LH.pl, CyberFolks), HTTP/3 i QUIC mogą być już aktywne po stronie serwera — bez żadnej konfiguracji z Twojej strony. Sprawdź nagłówki odpowiedzi:

curl -sI https://twojastrona.pl | grep -i 'alt-svc\|server\|x-powered'
# LiteSpeed Enterprise: server: LiteSpeed, alt-svc: h3=":443"

Najczęstsze pytania

Czym HTTP/3 różni się od HTTP/2? +
HTTP/2 działa na TCP i cierpi na "head-of-line blocking" — jeden utracony pakiet blokuje cały strumień. HTTP/3 używa QUIC (UDP), gdzie każdy strumień jest niezależny: utrata pakietu w jednym strumieniu nie blokuje pozostałych. Dodatkowo QUIC wbudowuje TLS 1.3 i obsługuje "connection migration" — połączenie nie zrywa się przy zmianie sieci (np. WiFi → LTE na smartfonie).
Czy HTTP/3 naprawdę przyspiesza strony? +
Zależy od scenariusza. Na szybkich, stabilnych łączach różnica jest minimalna (3-5%). Na słabych, stratnych połączeniach (mobilnych, satelitarnych) HTTP/3 może dać 20-30% skrócenia czasu ładowania. Największy zysk jest przy stronach z wieloma zasobami (CSS, JS, obrazy) — brak HoL blockingu przyspiesza ich równoległe pobieranie.
Jak sprawdzić czy moja strona obsługuje HTTP/3? +
Użyj curl z flagą --http3: curl --http3 -I https://twojadomena.pl. Alternatywnie otwórz DevTools Chrome → Network → kliknij żądanie i sprawdź nagłówek "protocol: h3". Możesz też użyć serwisu https://http3check.net/ lub uruchomić chrome://net-internals/#quic w Chrome aby zobaczyć aktywne sesje QUIC.
Czy Caddy obsługuje HTTP/3 automatycznie? +
Tak — Caddy od wersji 2.5 obsługuje HTTP/3 (QUIC) domyślnie. Wystarczy skonfigurować stronę z HTTPS (co Caddy robi automatycznie przez Let's Encrypt) i HTTP/3 jest włączone bez żadnej dodatkowej konfiguracji. Caddy używa biblioteki quic-go. Nie potrzebujesz patchować Nginx ani instalować BoringSSL.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.