Трохи вступу до HTTP/3 Звичайно, важливою відмінністю HTTP/3
є те, що він працює на новому транспортному протоколі QUIC. QUIC призначений для інтенсивного використання мобільних пристроїв в Інтернеті, коли люди носять смартфони, які постійно перемикаються з однієї мережі на іншу протягом дня. Коли розроблялися перші інтернет-протоколи, це було не так: пристрої були менш портативними і не часто перемикалися між мережами.
Іншими словами, QUIC допоможе виправити деякі з найбільших недоліків HTTP/2:
-
Розробка рішення проблеми низької продуктивності при перемиканні смартфона з Wi-Fi на стільниковий зв'язок (наприклад, при виході з дому або офісу)
-
Зменшення наслідків втрати пакетів - коли один пакет інформації не досягає місця призначення, він більше не блокує всі потоки інформації (проблема, відома як «блокування головки лінії»).
До речі, протокол QUIC був розроблений компанією Google ще в 2012 році і прийнятий Internet Engineering Task Force (IETF) — організацією, яка не залежить від стандартів постачальника — коли вони почали створювати новий стандарт HTTP/3. Після консультацій з експертами з усього світу, IETF вніс багато змін для розробки власної версії QUIC.
Увімкніть підтримку HTTP/3 у Nginx Підтримка протоколів QUIC та HTTP/3 доступна, починаючи з версії 1.25.0. Крім того, починаючи з версії 1.25.0, підтримка доступна в готових пакетах для Linux
.
Підтримка QUIC та HTTP/3 є експериментальною, тому все можливо.
Перевірка версії nginx:Переконайтеся, що версія правильна:
nginx -v
$ nginx version: nginx/1.25.3
Для створення nginx рекомендується використовувати бібліотеку SSL з підтримкою QUIC, таку як BoringSSL, LibreSSL або QuicTLS. В іншому випадку при використанні бібліотеки OpenSSL буде використовуватися шар сумісності OpenSSL, який не підтримує ранні дані.
Отже, у нас є стандартний віртуальний хост nginx з HTTP/2:Тепер давайте доповнимо його директивами для включення HTTP/3:В принципі, все, якщо у вас виникли проблеми з підключенням, переконайтеся
server
{
listen 443 ssl;
# включаем поддержку http2
http2 on;
ssl_protocols TLSv1.2;
ssl_certificate /path_certs/fullchain.pem;
ssl_certificate_key path_certs/privkey.pem;
...
}
server
{
# для лучшей совместимости рекомендуется использовать один порт для quic и https
# указываем протокол quic и параметр reuseport для правильной работы с несколькими рабочими процессами
listen 443 quic reuseport;
listen 443 ssl;
# включаем поддержку http2
http2 on;
# включаем поддержку http3
http3 on;
# разрешаем GSO
quic_gso on;
# разрешаем проверку адреса
quic_retry on;
# Для работы QUIC требуется версия протокола TLSv1.3.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /path_certs/fullchain.pem;
ssl_certificate_key path_certs/privkey.pem;
# для перенаправления браузеров в quic-порт
add_header Alt-Svc 'h3=":443";max=86400';
...
}
:
-
що nginx побудований з правильною бібліотекою SSL і версією
-
, яку клієнт дійсно підтримує роботу з QUIC
Після внесення правок і перезавантаження веб-сервера ви можете перевірити підтримку HTTP/3 через сервіс, або тепер ви можете відразу перевірити сайт нижче в полі.