Efter et års udvikling er der offentliggjort en ny stabil gren af den højtydende HTTP-server og multiprotocol proxy-server nginx 1.28.0, som har samlet ændringerne fra den primære gren 1.27.x. Fremover vil alle ændringer i den stabile gren 1.28 fokusere på at rette alvorlige fejl og sårbarheder. Snart vil den primære gren nginx 1.29 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 den primære gren, som danner grundlag for udgivelser af det kommercielle produkt Nginx Plus hvert tredje måned.
Ifølge martsrapporten fra Netcraft kører omkring 245 millioner websteder på nginx (243 millioner sidste år, 289 millioner for to år siden). Nginx anvendes på 17,89% af alle aktive websteder (18,15% sidste år, 18,94% for to år siden), hvilket svarer til førstepladsen i denne kategori (Apache's andel svarer til 16,03% (20,09% sidste år, 20,52% for to år siden), Cloudflare — 17,81% (14,12%, 11,32%), Google — 9,89% (10,41%, 9,89%).
Når man ser på alle websteder, opretholder nginx sin førende position med en markedsandel på 20,48% (22,31% sidste år, 25,94% for to år siden), mens Apache's andel er 16,03% (20,17%, 20,58%), Cloudflare — 12,87% (11,24%, 10,17%), OpenResty (platform baseret på nginx og LuaJIT) — 9,36% (7,93%, 7,94%).
Blandt de millioner mest besøgte websteder i verden indtager nginx andenpladsen med en andel på 20,37% (20,63% sidste år, 21,37% for to år siden). Førstepladsen er besat af Cloudflare — 22,32% (22,59% sidste år, 21,62% for to år siden). Apache httpd's andel er 17,95% (20,09%, 21,18%).
Ifølge W3Techs anvendes nginx på 33,8% af webstederne blandt de millioner mest besøgte (i april sidste år var denne procent 34,3%, året før 34,5%). Andelen af Apache faldt fra 30,1% til 26,3% på et år, mens andelen af Microsoft IIS faldt fra 5% til 4%. Andelen af Node.js steg fra 3,2% til 4,4%, og andelen af LiteSpeed steg fra 12,9% til 14,6%.
De mest markante forbedringer, der er tilføjet i processen med at danne den primære gren 1.27.x:
- For connections using the QUIC protocol, support for the CUBIC congestion control algorithm (RFC 9438) has been added, which gradually increases the congestion window size until packet loss occurs, after which the window size is rolled back to the value before loss. In tests conducted, using CUBIC reduced the file transfer time of a 500MB file by 24% at 40ms latency and BDP 750K (Bandwidth Delay Product) and by 73% at 100ms latency and BDP 9M.
- The stream module has added support for checking the revocation of client certificates using the OCSP (Online Certificate Status Protocol).
- The stream module implements support for OCSP Stapling, which allows the OCSP response signed by the certificate authority to be passed by the server serving the site during the TLS handshake, eliminating the need for a direct request to the certificate authority.
- Caching has been implemented during startup and configuration updates. SSL certificates, keys, and CRL (Certificate Revocation List).
- New features have been added to reduce resource consumption and lessen CPU load when using TLS in configurations with a large number of server and location blocks. The changes allow the use of an existing SSL context from the parent block instead of creating a separate SSL context (SSL_CTX in OpenSSL) for each configuration block.
- Support for certificates with additional information has been provided in the "ssl_client_certificate" directive.
- The "ssl_client_certificate" directive is now not mandatory for verifying client SSL certificates.
- Support for SmarterMail-specific IMAP LOGIN mode with untagged CAPABILITY response has been added to the ngx_mail_proxy_module.
- The directive "proxy_pass_trailers" has been added to the ngx_http_proxy_module, allowing header fields to be passed at the end of the response from the proxied server to the client.
- Support for the "resolve" parameter has been added to the "server" directive used in the "upstream" block, enabling tracking of changes IP-adresser for the domain name in use and automatic updates of the "upstream" block configuration without needing to restart nginx if the address changes.
- The ability to use variables in the "proxy_limit_rate", "fastcgi_limit_rate", "scgi_limit_rate", and "uwsgi_limit_rate" directives has been added.
- I direktiverne «proxy_bind», «fastcgi_bind», «grpc_bind», «memcached_bind», «scgi_bind» og «uwsgi_bind», samt som klientadresse i modulet ngx_http_realip_module, er det muligt at angive IPv6-adresser i firkantede parenteser uden portnummer.
- Der er tilføjet direktivet «keepalive_min_timeout», som definerer timeout, hvor nginx ikke vil lukke keep-alive forbindelsen til klienten.
- Som standard er protokollerne TLSv1 og TLSv1.1 deaktiveret.
- Problemer med lange indlæsningstider af konfigurationsfiler på grund af gentagen parsing af det samme sæt TLS-certifikater, nøgler og tillidslister er løst. Genindlæsning af konfigurationen er blevet hurtigere ved genbrug af uændrede TLS-objekter som certifikater, nøgler og CRL. For at deaktivere arv af objekter ved opdatering af konfigurationen er direktivet «ssl_object_cache_inheritable» blevet tilføjet.
- Der er tilføjet en cache til certifikater og nøgler, der er indlæst med variabler i direktiver (f.eks. «ssl_certificate /etc/ssl/$ssl_server_name.crt»). Der er tilføjet direktiverne «ssl_certificate_cache», «proxy_ssl_certificate_cache», «grpc_ssl_certificate_cache» og «uwsgi_ssl_certificate_cache» til at styre cachen. Gennem de angivne direktiver kan den maksimale cache-størrelse, gyldighedsperiode for poster og ryddetid for uønskede poster indstilles. For eksempel: «ssl_certificate_cache max=1000 inactive=20s valid=1m;».
- Hukommelsesforbruget er reduceret ved behandling af langvarige anmodninger i konfigurationer, der bruger direktiverne «gzip», «gunzip», «ssi», «sub_filter» eller «grpc_pass».
- Den maksimale størrelse af SSL-sessioner, der kan caches i delt hukommelse, er øget til 8192.
- Bygningen er blevet tilpasset med C-biblioteket Musl.
- Der er udført arbejde med at optimere ydeevnen og rette fejl i implementeringen af HTTP/3.
Derudover kan det nævnes, at udgivelsen af projektet FreeNginx 1.28.0, som udvikler et fork af Nginx, er blevet offentliggjort. Udviklingen af forken ledes af Maksim Dunin, en af de centrale udviklere af Nginx. FreeNginx positionerer sig som et non-profit projekt, der sikrer udviklingen af Nginx-kodebasen uden virksomhedens indblanding. Blandt de specifikke ændringer i FreeNginx 1.28:
- Parameteren «off» i direktivet «pid», der deaktiverer oprettelsen af en PID-fil.
- Begrænsning af intensiteten af loggerne for fejl for at beskytte mod udfyldning af loggen med standardmeddelelser.
- Implementeringen af parameteren multipath i direktivet listen for at understøtte Multipath TCP.
- Understøttelse af HTTP-headeren «Age» til bestemmelse af cache-poster livstid.
- Tilføjelse af XOAUTH2 og OAUTHBEARER autentifikationsmetoder til mail_proxy modulet.
Kilde: opennet.ru
