• Czas czytania ~2 min
  • 27.11.2023

Wprowadzenie do protokołu HTTP/3 Oczywiście ważną różnicą w stosunku do protokołu HTTP/3

jest to, że działa on na nowym protokole transportowym QUIC. QUIC jest przeznaczony do intensywnego korzystania z urządzeń mobilnych w Internecie, a ludzie noszą smartfony, które stale przełączają się z jednej sieci do drugiej w ciągu dnia. Kiedy opracowano pierwsze protokoły internetowe, tak nie było: urządzenia były mniej przenośne i nie przełączały się często między sieciami.

Innymi słowy, QUIC pomoże naprawić niektóre z największych wad protokołu HTTP/2:

  • Opracowanie rozwiązania problemu słabej wydajności przy przełączaniu smartfona z Wi-Fi na komórkową transmisję danych (np. podczas wychodzenia z domu lub biura)

  • Zmniejszenie skutków utraty pakietów - gdy jeden pakiet informacji nie dotrze do miejsca docelowego, nie blokuje już wszystkich strumieni informacji (problem znany jako "blokowanie nagłówka linii").

Nawiasem mówiąc, protokół QUIC został opracowany przez Google w 2012 roku i przyjęty przez Internet Engineering Task Force (IETF) — niezależną od dostawcy organizację standaryzacyjną — kiedy zaczęli tworzyć nowy standard HTTP/3. Po konsultacjach z ekspertami z całego świata, IETF dokonał wielu zmian, aby opracować własną wersję QUIC.

Włącz obsługę protokołu HTTP/3 w Nginx Obsługa protokołów QUIC i HTTP/3 jest dostępna od wersji 1.25.0. Ponadto, począwszy od wersji 1.25.0, obsługa jest dostępna w gotowych pakietach dla systemu Linux

.

Obsługa QUIC i HTTP/3 jest eksperymentalna, więc wszystko jest możliwe.

Sprawdzanie wersji nginx:Upewnianie się, że wersja jest poprawna:

nginx -v

$ nginx version: nginx/1.25.3

Do budowania nginx zalecana jest biblioteka SSL z obsługą QUIC, taka jak BoringSSL, LibreSSL lub QuicTLS. W przeciwnym razie, podczas korzystania z biblioteki OpenSSL, zostanie użyta warstwa zgodności OpenSSL, która nie obsługuje wczesnych danych.

Mamy więc standardowy wirtualny host nginx z HTTP/2:Teraz uzupełnijmy go dyrektywami umożliwiającymi HTTP/3:Zasadniczo to wszystko, jeśli masz problemy z połączeniem, upewnij się, że:

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';
    ...
}

  • że nginx jest zbudowany z poprawną biblioteką SSL i wersją

  • , którą klient naprawdę obsługuje współpracując z QUIC

Po wprowadzeniu zmian i ponownym uruchomieniu serwera WWW możesz sprawdzić obsługę HTTP/3 za pośrednictwem usługi lub teraz możesz od razu sprawdzić witrynę poniżej w polu.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297