PÄc gada izstrÄdes ir ieviests jauns stabils augstas veiktspÄjas HTTP servera un vairÄku protokolu starpniekservera atzars nginx 1.20.0, kurÄ iestrÄdÄtas galvenajÄ atzarÄ 1.19.x uzkrÄtÄs izmaiÅas. TurpmÄk visas izmaiÅas stabilajÄ zarÄ 1.20 bÅ«s saistÄ«tas ar nopietnu kļūdu un ievainojamÄ«bu novÄrÅ”anu. DrÄ«zumÄ tiks izveidota nginx 1.21 galvenÄ filiÄle, kurÄ turpinÄsies jaunu funkciju izstrÄde. Parastajiem lietotÄjiem, kuriem nav uzdevums nodroÅ”inÄt saderÄ«bu ar treÅ”o puÅ”u moduļiem, ieteicams izmantot galveno filiÄli, uz kuras pamata ik pÄc trim mÄneÅ”iem tiek veidoti komerciÄlÄ produkta Nginx Plus izlaidumi.
SaskaÅÄ ar Netcraft marta ziÅojumu, nginx tiek izmantots 20.15% no visÄm aktÄ«vajÄm vietnÄm (pirms gada 19.56%, pirms diviem gadiem 20.73%), kas atbilst otrajai vietai pÄc popularitÄtes Å”ajÄ kategorijÄ (Apache daļa atbilst 25.38% (pirms gada 27.64%), Google - 10.09%, Cloudflare - 8.51%. TajÄ paÅ”Ä laikÄ, Åemot vÄrÄ visas vietnes, nginx saglabÄ lÄ«derpozÄ«cijas un aizÅem 35.34% no tirgus (pirms gada 36.91%, pirms diviem gadiem - 27.52%), savukÄrt Apache daļa atbilst 25.98%, OpenResty ( platforma, kuras pamatÄ ir nginx un LuaJIT.) - 6.55%, Microsoft IIS - 5.96%.
Starp miljoniem visvairÄk apmeklÄto vietÅu pasaulÄ nginx daļa ir 25.55% (pirms gada 25.54%, pirms diviem gadiem 26.22%). PaÅ”laik Nginx darbojas aptuveni 419 miljonos vietÅu (pirms gada 459 miljoni). PÄc W3Techs datiem, nginx tiek izmantots 33.7% vietÅu no miljona visvairÄk apmeklÄtajÄm vietnÄm, pagÄjuÅ”Ä gada aprÄ«lÄ« Å”is rÄdÄ«tÄjs bija 31.9%, gadu iepriekÅ” - 41.8% (samazinÄjums skaidrojams ar pÄreju uz atseviŔķu Cloudflare http uzskaiti serveris). Apache daļa gada laikÄ samazinÄjÄs no 39.5% lÄ«dz 34%, bet Microsoft IIS daļa no 8.3% lÄ«dz 7%. LiteSpeed āādaļa pieauga no 6.3% lÄ«dz 8.4%, bet Node.js no 0.8% lÄ«dz 1.2%. KrievijÄ nginx tiek izmantots 79.1% no visvairÄk apmeklÄtajÄm vietnÄm (pirms gada - 78.9%).
IevÄrojamÄkie uzlabojumi, kas pievienoti 1.19.x augÅ”puses filiÄles izstrÄdes laikÄ:
- Pievienota iespÄja pÄrbaudÄ«t klientu sertifikÄtus, izmantojot ÄrÄjos pakalpojumus, kuru pamatÄ ir OCSP (Online Certificate Status Protocol) protokols. Lai iespÄjotu pÄrbaudi, tiek piedÄvÄta direktÄ«va ssl_ocsp, lai konfigurÄtu keÅ”atmiÅas lielumu - ssl_ocsp_cache, lai atkÄrtoti definÄtu sertifikÄtÄ norÄdÄ«tÄ OCSP apstrÄdÄtÄja URL - ssl_ocsp_responder.
- Ir iekļauts modulis ngx_stream_set_module, kas ļauj pieŔķirt vÄrtÄ«bu mainÄ«gajam serverim { listen 12345; iestatÄ«t $true 1; }
- Pievienota proxy_cookie_flags direktÄ«va, lai norÄdÄ«tu karodziÅus sÄ«kfailiem starpniekservera savienojumos. PiemÄram, lai pievienotu karodziÅu āhttponlyā sÄ«kfailam āoneā un karogus ānosecureā un āsamesite=strictā visiem pÄrÄjiem sÄ«kfailiem, varat izmantot Å”Ädu konstrukciju: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
LÄ«dzÄ«ga userid_flags direktÄ«va karodziÅu pievienoÅ”anai sÄ«kfailiem ir ieviesta arÄ« modulim ngx_http_userid.
- Pievienotas direktÄ«vas āssl_conf_commandā, āproxy_ssl_conf_commandā, āgrpc_ssl_conf_commandā un āuwsgi_ssl_conf_commandā, ar kurÄm var iestatÄ«t patvaļīgus parametrus OpenSSL konfigurÄÅ”anai. PiemÄram, lai pieŔķirtu prioritÄti ChaCha Å”ifriem un uzlabotai TLSv1.3 Å”ifru konfigurÄcijai, varat norÄdÄ«t ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Pievienota "ssl_reject_handshake" direktÄ«va, kas uzdod noraidÄ«t visus mÄÄ£inÄjumus vienoties par SSL savienojumiem (piemÄram, var izmantot, lai noraidÄ«tu visus zvanus ar nezinÄmiem saimniekdatora nosaukumiem SNI laukÄ). serveris { klausÄ«ties 443 ssl; ssl_reject_handshake ieslÄgts; } serveris { klausÄ«ties 443 ssl; servera_nosaukums example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- Pasta starpniekserverim ir pievienota direktÄ«va proxy_smtp_auth, kas ļauj autentificÄt lietotÄju aizmugursistÄmÄ, izmantojot komandu AUTH un PLAIN SASL mehÄnismu.
- Pievienota "keepalive_time" direktÄ«va, kas ierobežo katra Keep-alive savienojuma kopÄjo kalpoÅ”anas laiku, pÄc kura savienojums tiks slÄgts (nejaukt ar keepalive_timeout, kas nosaka neaktivitÄtes laiku, pÄc kura tiek aizvÄrts uzturÄÅ”anas savienojums).
- Pievienots $connection_time mainÄ«gais, caur kuru ar milisekundes precizitÄti var iegÅ«t informÄciju par savienojuma ilgumu sekundÄs.
- DirektÄ«vÄm āproxy_cache_pathā, āfastcgi_cache_pathā, āscgi_cache_pathā un āuwsgi_cache_pathā ir pievienots parametrs āmin_freeā, kas regulÄ keÅ”atmiÅas lielumu, pamatojoties uz brÄ«vÄs diska vietas minimÄlÄ lieluma noteikÅ”anu.
- DirektÄ«vas "lingering_close", "lingering_time" un "lingering_timeout" ir pielÄgotas darbam ar HTTP/2.
- Savienojuma apstrÄdes kods HTTP/2 ir tuvu HTTP/1.x ievieÅ”anai. Atbalsts atseviŔķiem iestatÄ«jumiem "http2_recv_timeout", "http2_idle_timeout" un "http2_max_requests" ir pÄrtraukts par labu vispÄrÄ«gajÄm direktÄ«vÄm "keepalive_timeout" un "keepalive_requests". IestatÄ«jumi āhttp2_max_field_sizeā un āhttp2_max_header_sizeā ir noÅemti, un tÄ vietÄ ir jÄizmanto ālarge_client_header_buffersā.
- Pievienota jauna komandrindas opcija ā-eā, kas ļauj norÄdÄ«t alternatÄ«vu failu kļūdu žurnÄla rakstÄ«Å”anai, kas tiks izmantots iestatÄ«jumos norÄdÄ«tÄ Å¾urnÄla vietÄ. Faila nosaukuma vietÄ varat norÄdÄ«t Ä«paÅ”o vÄrtÄ«bu stderr.
Avots: opennet.ru