• Час читання ~2 хв
  • 27.11.2023

Трохи вступу до 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 через сервіс, або тепер ви можете відразу перевірити сайт нижче в полі.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297