Обявената поддръжка не означава работеща връзка
Сървърът обявява HTTP/3 в заглавката на отговора Alt-Svc, която клиентът получава през HTTP/1.1 или HTTP/2. Заглавката е само обещание. HTTP/3 работи през QUIC върху UDP, така че страницата може да се зареди нормално при напълно блокиран UDP, а браузърът незабелязано да остане на HTTP/2.
curl -sI https://server.example/ | grep -i alt-svcПотвърдете реално прехвърляне
Само завършена заявка през QUIC потвърждава HTTP/3. Използвайте curl, компилиран с поддръжка на HTTP/3; много системни пакети я нямат и тогава опцията се отхвърля, което не казва нищо за сървъра. В браузъра отворете инструментите за разработчици и вижте колоната за протокола, която показва h3 за такава заявка. При първо посещение браузърът може да използва HTTP/2, затова заредете страницата отново.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/Проверете конфигурацията на NGINX
NGINX се нуждае от слушател за QUIC наред с този за TCP, а версията и компилацията му трябва да го поддържат. Изисква се TLS 1.3, защото QUIC го използва пряко. Проверете конфигурацията преди презареждане. Стойността ma в Alt-Svc е времето в секунди, за което клиентите запомнят обещанието, затова използвайте кратко време при тестове.
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 -tРазрешете UDP 443 по целия път
Най-честата причина за неуспех е защитна стена, която допуска TCP 443, но не и UDP 443. Проверете сървъра и всеки външен филтър. На сървъра може да се потвърди дали сокетът слуша. Някои корпоративни и обществени мрежи умишлено блокират QUIC, така че неуспешен тест от една мрежа не доказва проблем в сървъра: повторете го от друга.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443По-бърз ли е новият протокол?
HTTP/3 помага най-много при връзки със загуба на пакети или при смяна на мрежата, защото изгубен пакет не задържа останалите потоци. При добра кабелна връзка разликата може да е малка, а натоварването на CPU на сървъра да е по-високо. Измерете своя случай, вместо да предполагате подобрение, и оставете HTTP/2 достъпен за клиенти, които не могат да използват UDP.
Тестът за HTTP/3 в CH-J Server Manager
Server Diagnostics включва HTTP клиент, така че тестът не зависи от системния curl. Той отчита HTTP/3 като потвърден само след завършено прехвърляне през QUIC и приема Alt-Svc само като обявяване на поддръжка. При изтичане на времето за UDP съобщава, че поддръжката на сървъра остава непроверена, защото причината може да е мрежата между вас и сървъра, и не отчита преминаването към друг протокол като успех.