Efter et års udvikling er den nye stabile version af den højtydende HTTP-server og multi-protokol proxy-server nginx 1.26.0 blevet offentliggjort. Denne version indeholder ændringer, der er akkumulere i hovedversionen 1.25.x. I fremtiden vil alle ændringer i den stabile version 1.26 være fokuseret på at rette alvorlige fejl og sårbarheder. Snart vil hovedversionen nginx 1.27 blive dannet, hvor udviklingen af nye funktioner vil fortsætte. For almindelige brugere, der ikke har brug for at sikre kompatibilitet med tredjepartsmoduler, anbefales det at bruge hovedversionen, som en gang hvert tredje måned danner grundlag for udgivelserne af det kommercielle produkt Nginx Plus.
Ifølge Netcrafts rapport fra marts kører omkring 243 millioner websteder (289 millioner for et år siden) under nginx. Nginx anvendes på 18.15% af alle aktive websteder (18.94% for et år siden, 20.08% for to år siden), hvilket svarer til andenpladsen i popularitet i denne kategori (Apache har en markedsandel på 20.09% (20.52% for et år siden, 22.58% for to år siden), Cloudflare — 14.12% (11.32%, 10.42%), Google — 10.41% (9.89%, 8.89%). Når alle websteder betragtes, bevarer nginx sin førerposition med en markedsandel på 22.31% (for et år siden 25.94%, for to år siden — 31.13%), mens Apache's andel svarer til 20.17% (20.58%, 23.08%), Cloudflare — 11.24% (10.17%, 5.49%), OpenResty (platform baseret på nginx og LuaJIT) — 7.93% (7.94%, 8.01%).
Bland de mest besøgte websteder i verden udgør nginx 20,63% (sidste år 21,37%, for to år siden 21,79%), Cloudflare 22,59% (sidste år 21,62%), og Apache httpd 20,09% (21,18%). Ifølge W3Techs anvendes nginx på 34,3% af de mest besøgte websteder, mens dette tal var 34,5% i april sidste år og 33,1% året forinden. Andelen af Apache er faldet fra 32,2% til 30,1% på et år, mens Microsoft IIS's andel er faldet fra 5,6% til 4,8%. Andelen af Node.js er steget fra 2,4% til 3,2%, og andelen af LiteSpeed er steget fra 11,8% til 12,9%.
De mest markante forbedringer, der blev tilføjet i dannelsen af hovedversionen 1.25.x:
- Modulet ngx_http_v3 er tilføjet med eksperimentel støtte for HTTP/3-protokollen. For at bygge modulet er der en option "--with-http_v3_module". HTTP/3 definerer brugen af QUIC (Quick UDP Internet Connections) som transport for HTTP/2. QUIC er en overbygning på UDP-protokollen, der understøtter multiplexing af flere forbindelser og tilbyder krypteringsmetoder, der svarer til TLS/SSL. Protokollen blev skabt i 2013 af Google som et alternativ til TCP+TLS-kombinationen til web, der løser problemer med lang oprettelsestid og forhandling af forbindelser i TCP og fjerner forsinkelser ved tab af pakker under datatransmission.
- En separat direktiv "http2" er blevet tilføjet for selektivt at aktivere HTTP/2-protokollen knyttet til servere (kan bruges i separate "server" blokke). Parameteren "http2" i "listen" direktivet er blevet forældet.
- Beskyttelsen mod unormal aktivitet hos HTTP/2-klienter er blevet styrket, især mod DoS-angreb af typen "Rapid Reset", hvor et stort antal straks nulstillede streams oprettes inden for en enkelt HTTP/2-forbindelse. I standardkonfigurationen er sådanne angreb begrænset af antallet af forespørgsler pr. forbindelse "keepalive_requests" (efter hver 1000 forespørgsler vil forbindelsen blive nulstillet) og af begrænsningerne "limit_req". For at reagere hurtigere på forespørgselsflom gennem et stort antal streams er der tilføjet en ekstra begrænsning, der forhindrer oprettelsen af mere end 256 (2 * max_concurrent_streams) nye streams pr. begivenhedscyklus som standard. Den nye begrænsning gør det muligt at begynde at blokere forespørgsler, før det samlede antal samtidige streams nås, for eksempel når streams behandles asynkront eller nulstilles.
- Modulet stream har fået support til virtuele servere, hvis konfiguration defineres i blokken «server { … }» ved hjælp af direktivet server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
- En ny modul ngx_stream_pass_module er tilføjet, der er designet til direkte at videresende accepterede forbindelser til enhver lytte-socket forbundet med moduler som http, stream og mail. stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
- I direktivet listen for modulet stream er der blevet implementeret støtte til parametrene «deferred» (aktiverer udsat accept), «accept_filter» (filter af indkommende forbindelser, anvendt før kaldet til accept-funktionen) og «setfib» (angivelse af routingtabel).
- For nogle arkitekturer er der implementeret støtte til bestemmelse af blokstørrelsen (cache line), der bruges til overførsel af data mellem CPU-cache og hukommelse.
- Forbedret håndtering af buffere, der bruges ved automatisk at identificere HTTP/2-forbindelser.
- Ydelsen ved opstart af konfigurationer med mange "location" direktiver er forbedret.
- Støtten til Server push-teknologi i HTTP/2 er blevet fjernet.
- Support for the directive "ssl," previously declared deprecated, has been discontinued.
The stable release of FreeNginx 1.26.0, a developing fork of Nginx, was published two weeks ago. The development of the fork is led by Maxim Dunin, one of the key developers of Nginx. FreeNginx is positioned as a non-commercial project that ensures the development of the Nginx codebase without corporate interference.
Kilde: opennet.ru
