Cloudflare har implementerat en modul för att stödja HTTP/3 i NGINX
Cloudflare Company bereddmodul för att ge stöd för HTTP/3-protokollet i NGINX. Modulen är designad som ett tillägg till biblioteket utvecklat av Cloudflare quiche med implementeringen av QUIC och HTTP/3 transportprotokoll. Quichekoden är skriven i Rust, men själva NGINX-modulen är skriven i C och kommer åt biblioteket med dynamisk länkning. Utvecklingen öppen under BSD-licensen.
För att montera, ladda bara ner plåster till nginx 1.16 och код quichebibliotek, bygg sedan om nginx med alternativen "—with-http_v3_module —with-quiche=../quiche". När du bygger bör TLS-stöd baseras på BoringSSL-biblioteket ("--with-openssl=../quiche/deps/boringssl"), användningen av OpenSSL stöds ännu inte. För att acceptera anslutningar måste du lägga till lyssningsdirektivet med "quic"-flaggan till inställningarna (till exempel "lyssna 443 quic reuseport").
I klientprogramvara har HTTP/3-stöd redan lagts till i experimentella versioner av Chrome Canary och curl-verktyget. På serversidan var det fram till nu nödvändigt att använda separata, begränsade testimplementationer. Möjligheten att bearbeta HTTP/3 i nginx kommer avsevärt att förenkla driftsättningen av servrar med HTTP/3-stöd och kommer att göra testimplementering av det nya protokollet mer tillgängligt. Framväxten av standardstöd för HTTP/3 i nginx förväntas i grenen 1.17.x i 6-12 månader.
Kom ihåg att HTTP/3 standardiserar användningen av QUIC-protokollet som en transport för HTTP/2. Protokoll QUIC (Quick UDP Internet Connections) har utvecklats av Google sedan 2013 som ett alternativ till kombinationen TCP+TLS för webben, vilket löser problem med långa installations- och förhandlingstider för anslutningar i TCP och eliminerar förseningar när paket går förlorade under dataöverföring. QUIC är en förlängning av UDP-protokollet som stöder multiplexering av flera anslutningar och tillhandahåller krypteringsmetoder motsvarande TLS/SSL.
Möjligheten att omedelbart upprätta en anslutning (0-RTT, i cirka 75 % av fallen kan data överföras omedelbart efter att anslutningspaketet har skickats) och ger minimala förseningar mellan att skicka en förfrågan och ta emot ett svar (RTT, Round Trip Time);
Att inte använda samma sekvensnummer vid återsändning av ett paket, vilket undviker tvetydighet när det gäller att identifiera mottagna paket och blir av med timeouts;
Förlust av ett paket påverkar endast leveransen av strömmen som är associerad med den och stoppar inte leveransen av data i parallella strömmar som överförs genom den aktuella anslutningen;
Felkorrigeringsfunktioner som minimerar förseningar på grund av återsändning av förlorade paket. Användning av speciella felkorrigeringskoder på paketnivå för att minska situationer som kräver återsändning av förlorad paketdata.
Kryptografiska blockgränser är anpassade till QUIC-paketgränser, vilket minskar effekten av paketförluster på avkodning av innehållet i efterföljande paket;
Inga problem med TCP-köblockering;
Stöd för anslutningsidentifierare, vilket minskar tiden det tar att upprätta en återanslutning för mobila klienter;
Möjlighet att ansluta avancerade mekanismer för kontroll av överbelastning av anslutningar;
Använder tekniker för prognostisering av genomströmning per riktning för att säkerställa att paket skickas med optimala hastigheter, vilket förhindrar att de blir överbelastade och orsakar paketförlust;
Märkbar tillväxt prestanda och genomströmning jämfört med TCP. För videotjänster som YouTube har QUIC visat sig minska återlagringsoperationer när du tittar på videor med 30 %.