Ogłoszenie obsługi nie oznacza działania
Serwer ogłasza HTTP/3 w nagłówku odpowiedzi Alt-Svc, który klient otrzymuje przez HTTP/1.1 lub HTTP/2. Nagłówek jest tylko obietnicą. HTTP/3 działa przez QUIC z użyciem UDP, więc strona może ładować się normalnie przy całkowicie zablokowanym UDP, a przeglądarka bez powiadomienia pozostaje przy HTTP/2.
curl -sI https://server.example/ | grep -i alt-svcPotwierdź rzeczywisty transfer
Tylko ukończone żądanie przez QUIC potwierdza HTTP/3. Użyj curl skompilowanego z obsługą HTTP/3; wiele pakietów systemowych jej nie ma i wtedy opcja jest odrzucana, co niczego nie mówi o serwerze. W przeglądarce otwórz narzędzia deweloperskie i sprawdź kolumnę Protocol, która dla takiego żądania pokazuje h3. Przy pierwszej wizycie przeglądarka może użyć HTTP/2, więc załaduj stronę ponownie.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/Sprawdź konfigurację NGINX
NGINX potrzebuje nasłuchu QUIC obok nasłuchu TCP, a wersja i sposób kompilacji muszą go obsługiwać. Wymagany jest TLS 1.3, ponieważ QUIC korzysta z niego bezpośrednio. Sprawdź konfigurację przed jej przeładowaniem. Wartość ma w Alt-Svc oznacza czas w sekundach, przez który klienci pamiętają obietnicę, więc podczas testów używaj krótkiego czasu.
listen 443 ssl;
listen 443 quic reuseport;
http2 on;
add_header Alt-Svc 'h3=":443"; ma=300' always;
nginx -V 2>&1 | grep -o with-http_v3_module
sudo nginx -tOtwórz UDP 443 na całej trasie
Najczęstszą przyczyną niepowodzenia jest zapora dopuszczająca TCP 443, ale nie UDP 443. Sprawdź serwer i wszystkie filtry zewnętrzne. Na serwerze można potwierdzić nasłuch na gnieździe. Niektóre sieci firmowe i publiczne celowo blokują QUIC, więc nieudany test z jednej sieci nie dowodzi winy serwera: powtórz go z innej.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443Czy nowy protokół jest szybszy?
HTTP/3 pomaga najbardziej przy połączeniach z utratą pakietów lub zmianą sieci, ponieważ utracony pakiet nie wstrzymuje innych strumieni. Przy dobrym połączeniu przewodowym różnica może być niewielka, a użycie CPU na serwerze może wzrosnąć. Zmierz własny przypadek zamiast zakładać poprawę i pozostaw HTTP/2 dostępne dla klientów, którzy nie mogą korzystać z UDP.
Test HTTP/3 w CH-J Server Manager
Server Diagnostics ma dołączonego klienta HTTP, więc test nie zależy od systemowego curl. Potwierdza HTTP/3 dopiero po ukończeniu transferu QUIC, a Alt-Svc traktuje wyłącznie jako ogłoszenie. Przy przekroczeniu czasu oczekiwania UDP informuje, że obsługa po stronie serwera pozostaje niezweryfikowana, ponieważ przyczyną może być sieć między tobą a serwerem, i nie uznaje przejścia na inny protokół za sukces.