Pas një viti zhvillimi, është prezantuar dega e re stabile e serverit HTTP me performancë të lartë dhe serverit proxy multi-protokol nginx 1.20.0, e cila përfshin ndryshimet e grumbulluara në degën kryesore 1.19.x. Në të ardhmen, të gjitha ndryshimet në degën e stabilizuar 1.20 do të lidhen me eliminimin e defekteve të rënda dhe dobësive. Së shpejti do të formohet dega kryesore e nginx 1.21, në të cilën do të vazhdojë zhvillimi i mundësive të reja. Për përdoruesit e zakonshëm, të cilët nuk kanë si qëllim të sigurojnë përputhshmërinë me module të jashtme, rekomandohet të përdorin degën kryesore, mbi të cilën aktualisht renditen lëshime të produktit komercial Nginx Plus çdo tre muaj.
Sipas raportit të marsit nga kompania Netcraft, nginx përdoret në 20.15% të të gjithë faqeve aktive (një vit më parë 19.56%, dy vite më parë 20.73%), që i korrespondon vendit të dytë për popullaritet në këtë kategori (pjesa e Apache është 25.38% (një vit më parë 27.64%), Google - 10.09%, Cloudflare - 8.51%. Ndërkohë, kur shqyrtohen të gjitha faqet, nginx ruan udhëheqjen me një pjesë tregu prej 35.34% (një vit më parë 36.91%, dy vite më parë - 27.52%), ndërsa pjesa e Apache është 25.98%, OpenResty (platformë e bazuar në nginx dhe LuaJIT.) - 6.55%, Microsoft IIS - 5.96%.
Mes një milioni faqeve më të vizituara në botë, pjesa e nginx arrin 25.55% (një vit më parë 25.54%, dy vite më parë 26.22%). Aktualisht, rreth 419 milion faqeve mbështeten në nginx (një vit më parë 459 milion). Sipas të dhënave nga W3Techs, nginx përdoret në 33.7% të faqeve nga milioni më të vizituara; në prillin e kaluar ky tregues ishte 31.9%, ndërsa dy vite më parë - 41.8% (rënia është shpjeguar nga kalimi në një llogari të veçantë të serverit http të Cloudflare). Pjesa e Apache ka rënë nga 39.5% në 34% brenda një viti, ndërsa pjesa e Microsoft IIS nga 8.3% në 7%. Pjesa e LiteSpeed është rritur nga 6.3% në 8.4%, ndërsa Node.js nga 0.8% në 1.2%. Në Rusi, nginx përdoret në 79.1% të faqeve më të vizituara (një vit më parë - 78.9%).
Përmirësimet më të dukshme, të shtuar gjatë formimit të degës kryesore 1.19.x:
- ĂshtĂ« shtuar mundĂ«sia e verifikimit tĂ« certifikatave tĂ« klientĂ«ve duke angazhuar shĂ«rbime tĂ« jashtme mbi protokollin OCSP (Protokolli i Statusit tĂ« CertifikatĂ«s Online). PĂ«r tĂ« aktivizuar verifikimin, Ă«shtĂ« propozuar direktiva ssl_ocsp; pĂ«r konfigurimin e madhĂ«sisĂ« sĂ« caches - ssl_ocsp_cache; pĂ«r tejkalimin e URL-sĂ« sĂ« OCSP-ruajtĂ«sit tĂ« caktuar nĂ« certifikatĂ« - ssl_ocsp_responder.
- Një moduli i ri ngx_stream_set_module është përfshirë, duke lejuar caktimin e vlerave të variablave server { listen 12345; set $true 1; }
- ĂshtĂ« shtuar direktiva proxy_cookie_flags pĂ«r tĂ« caktuar flamujt pĂ«r Cookie-nĂ« nĂ« lidhjet e proxy-t. PĂ«r shembull, pĂ«r tĂ« shtuar flamurin "httponly" nĂ« Cookie-nĂ« "one", dhe flamujt "nosecure" dhe "samesite=strict" pĂ«r tĂ« gjitha Cookie-t e tjera, mund tĂ« pĂ«rdoret konstrukti: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Një direktivë e ngjashme userid_flags për të shtuar flag-at në Cookie është implementuar gjithashtu për modulën ngx_http_userid.
- Janë shtuar direktivat "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" dhe "uwsgi_ssl_conf_command", përmes të cilave mund të përcaktohen parametra të rastit për rregullimin e OpenSSL. Për shembull, për të prioritarizuar cipher-at ChaCha dhe për të rregulluar cipher-at TLSv1.3, mund të caktohet: ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- ĂshtĂ« shtuar direktiva "ssl_reject_handshake", e cila urdhĂ«ron tĂ« refuzohen tĂ« gjitha pĂ«rpjekjet pĂ«r negociim. SSL-e lidhjeve (pĂ«r shembull, mund tĂ« pĂ«rdoret pĂ«r tĂ« ndaluar tĂ« gjitha kĂ«rkesat me emra hostesh tĂ« panjohur nĂ« fushĂ«n SNI). 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; }
- Në proxy-in postal është shtuar direktiva proxy_smtp_auth, e cila lejon autentifikimin e përdoruesit në backend përmes komandës AUTH dhe mekanizmit PLAIN SASL.
- E shtuar drejta «keepalive_time», e cila kufizon kohën totale të jetës së çdo lidhjeje keep-alive, pas së cilës lidhja do të mbyllet (mos e ngatërroni me keepalive_timeout, i cili përcakton kohën e papunësisë, pas së cilës lidhja keep-alive mbyllet).
- Shtuar variabla $connection_time, përmes së cilës mund të merret informacion për kohëzgjatjen e lidhjes në sekonda me saktësi milisekondash.
- Në direktivat «proxy_cache_path», «fastcgi_cache_path», «scgi_cache_path» dhe «uwsgi_cache_path» u shtua parametri «min_free», i cili rregullon madhësinë e caches në bazë të përcaktimit të madhësisë minimale të hapësirës së lirë në disk.
- Direktivët «lingering_close», «lingering_time» dhe «lingering_timeout» janë adaptuar për të punuar me HTTP/2.
- Kodi për përpunimin e lidhjeve në HTTP/2 është afruar me realizimin e HTTP/1.x. Mbështetje për cilësimet e veçanta «http2_recv_timeout», «http2_idle_timeout» dhe «http2_max_requests» është ndaluar në favor të direktivave të përgjithshme «keepalive_timeout» dhe «keepalive_requests». Janë hequr cilësimet «http2_max_field_size» dhe «http2_max_header_size», për të cilat duhet të përdoret «large_client_header_buffers».
- E shtuar një mundësi e re në komandën «-e», e cila lejon specifikimin e një skedari alternativ për regjistrimin e gabimeve, i cili do të përdoret në vend të regjistrit të përcaktuar në cilësime. Në vend të emrit të skedarit, mund të specifikohet vlera speciale stderr.
Burimi: opennet.ru
