Efter et års udvikling er den nye stabile version af den højtydende HTTP-server og multifunktions proxyserver nginx 1.20.0 blevet præsenteret, som har samlet ændringerne fra hovedversionen 1.19.x. Fremover vil alle ændringer i den stabile version 1.20 fokusere på at rette alvorlige fejl og sårbarheder. Den næste hovedversion, nginx 1.21, vil snart blive dannet, hvor udviklingen af nye funktioner vil fortsætte. Almindelige brugere, der ikke har behov for at sikre kompatibilitet med tredjepartsmoduler, anbefales at bruge hovedversionen, som danner grundlag for udgivelser af det kommercielle produkt Nginx Plus hvert tredje måned.
Ifølge martsrapporten fra Netcraft anvendes nginx på 20,15% af alle aktive websteder (for et år siden 19,56%, for to år siden 20,73%), hvilket placerer det som det næstmest populære i denne kategori (andel af Apache er 25,38% (for et år siden 27,64%), Google - 10,09%, Cloudflare - 8,51%. Når man ser på alle websteder, bevarer nginx sin førerposition og besætter 35,34% af markedet (for et år siden 36,91%, for to år siden - 27,52%), mens andelen af Apache er 25,98%, OpenResty (platform baseret på nginx og LuaJIT) - 6,55%, Microsoft IIS - 5,96%.
Blandt en million af de mest besøgte websteder i verden er andelen af nginx 25,55% (for et år siden 25,54%, for to år siden 26,22%). I øjeblikket kører omkring 419 millioner websteder på nginx (for et år siden 459 millioner). Ifølge W3Techs bruges nginx på 33,7% af webstederne blandt de million mest besøgte, hvilket i april sidste år var 31,9%, og for to år siden 41,8% (faldet skyldes, at http-serveren Cloudflare nu registreres separat). Andelen af Apache er faldet fra 39,5% til 34% i løbet af året, mens andelen af Microsoft IIS er faldet fra 8,3% til 7%. Andelen af LiteSpeed er steget fra 6,3% til 8,4%, og Node.js fra 0,8% til 1,2%. I Rusland anvendes nginx på 79,1% af de mest besøgte websteder (for et år siden - 78,9%).
De mest bemærkelsesværdige forbedringer, der er blevet tilføjet i dannelsen af hovedversionen 1.19.x:
- Der er tilføjet mulighed for kontrol af klientscertifikater ved at involvere eksterne tjenester baseret på OCSP-protokollen (Online Certificate Status Protocol). For at aktivere kontrol er direktivet ssl_ocsp foreslået, for indstilling af cache-størrelse - ssl_ocsp_cache, og for at overskrive URL'en til OCSP-håndtereren, der er angivet i certifikatet - ssl_ocsp_responder.
- Modulet ngx_stream_set_module er inkluderet, hvilket gør det muligt at tildele en værdi til en variabel server { listen 12345; set $true 1; }
- Direktivet proxy_cookie_flags er blevet tilføjet for at angive flag for cookies i proxy-forbindelser. For eksempel, for at tilføje flaget «httponly» til cookie «one» og for alle andre cookies flagene «nosecure» og «samesite=strict» kan følgende bruges: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Et lignende direktiv userid_flags til at tilføje flags til cookies er også implementeret for ngx_http_userid-modulet.
- Direktiverne «ssl_conf_command», «proxy_ssl_conf_command», «grpc_ssl_conf_command» og «uwsgi_ssl_conf_command» er blevet tilføjet, som gør det muligt at specificere vilkårlige parametre til konfigurationen af OpenSSL. For eksempel, for at prioritere ChaCha-krypter og tilpasse TLSv1.3-krypter kan følgende angives ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Direktivet «ssl_reject_handshake» er blevet tilføjet, hvilket instruerer om at afvise alle forsøgsforhandlinger. SSL-forbindelser (for eksempel kan det bruges til at afvise alle anmodninger med ukendte værtsnavne i SNI-feltet). server { listen 443 ssl; ssl_reject_handshake on; } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- I mailproxyen er direktivet proxy_smtp_auth tilføjet, der muliggør autentificering af brugeren på backend ved hjælp af AUTH-kommandoen og PLAIN SASL-mekanismen.
- Direktivet «keepalive_time» er blevet tilføjet, hvilket begrænser den samlede levetid for hver keep-alive-forbindelse, hvorefter forbindelsen lukkes (ikke at forveksle med keepalive_timeout, der definerer inaktivitetstiden, hvorefter keep-alive-forbindelsen lukkes).
- Variablen $connection_time er blevet tilføjet, hvilket giver mulighed for at få information om forbindelsens varighed i sekunder med millisekundpræcision.
- I direktiverne «proxy_cache_path», «fastcgi_cache_path», «scgi_cache_path» og «uwsgi_cache_path» er parameteren «min_free» blevet tilføjet, som regulerer cache-størrelsen baseret på bestemmelsen af minimumsstørrelsen af ledig diskplads.
- Direktiverne «lingering_close», «lingering_time» og «lingering_timeout» er tilpasset til at arbejde med HTTP/2.
- Forbindelseskoden i HTTP/2 er tættere på implementeringen af HTTP/1.x. Støtten for de enkelte indstillinger "http2_recv_timeout", "http2_idle_timeout" og "http2_max_requests" er blevet fjernet til fordel for de generelle direktiver "keepalive_timeout" og "keepalive_requests". Indstillingerne "http2_max_field_size" og "http2_max_header_size" er blevet fjernet, og i stedet skal "large_client_header_buffers" anvendes.
- En ny kommandolinjeindstilling "-e" er tilføjet, der gør det muligt at angive en alternativ fil til skrivning af fejl-loggen, som vil blive anvendt i stedet for loggen, der er angivet i indstillingerne. I stedet for filnavnet kan der angives en speciel værdi stderr.
Kilde: opennet.ru
