După un an de dezvoltare, a fost lansată o nouă ramură stabilă a serverului HTTP de înaltă performanță și a proxy-ului multifuncțional nginx 1.20.0, care a acumulat modificările din ramura principală 1.19.x. În continuare, toate modificările din ramura stabilă 1.20 vor fi legate de eliminarea bug-urilor grave și a vulnerabilităților. În curând, va fi formată ramura principală nginx 1.21, în care se vor continua dezvoltarea unor noi funcționalități. Utilizatorilor obișnuiți, care nu necesită compatibilitate cu module externe, li se recomandă utilizarea ramurii principale, pe baza căreia se fac lansări ale produsului comercial Nginx Plus la fiecare trei luni.
Conform raportului din martie al companiei Netcraft, nginx este utilizat pe 20.15% din toate site-urile active (cu un an în urmă 19.56%, cu doi ani în urmă 20.73%), ceea ce corespunde locului doi în popularitate în această categorie (cota Apache este de 25.38% (cu un an în urmă 27.64%), Google — 10.09%, Cloudflare — 8.51%. În același timp, în considerarea tuturor site-urilor, nginx rămâne lider și ocupă 35.34% din piață (cu un an în urmă 36.91%, cu doi ani în urmă — 27.52%), în timp ce cota Apache este de 25.98%, OpenResty (platformă bazată pe nginx și LuaJIT) — 6.55%, Microsoft IIS — 5.96%.
Printre cele mai vizitate un milion de site-uri din lume, cota nginx este de 25.55% (cu un an în urmă 25.54%, cu doi ani în urmă 26.22%). În prezent, aproximativ 419 milioane de site-uri sunt gestionate de nginx (cu un an în urmă 459 milioane). Conform W3Techs, nginx este utilizat pe 33.7% din site-urile cele mai vizitate, în aprilie anul trecut acest procent era de 31.9%, iar în urmă cu doi ani — 41.8% (declinul este explicat de trecerea la contabilizarea separată a serverului HTTP Cloudflare). Cota Apache a scăzut de la 39.5% la 34%, iar cota Microsoft IIS de la 8.3% la 7%. Cota LiteSpeed a crescut de la 6.3% la 8.4%, iar Node.js de la 0.8% la 1.2%. În Rusia, nginx este folosit pe 79.1% din cele mai vizitate site-uri (cu un an în urmă — 78.9%).
Cele mai notabile îmbunătățiri adăugate în procesul de formare a ramurii principale 1.19.x:
- A fost adăugată posibilitatea de verificare a certificatelor clienților cu implicarea serviciilor externe bazate pe protocolul OCSP (Online Certificate Status Protocol). Pentru a activa verificarea, a fost propusă directivele ssl_ocsp, pentru a configura dimensiunea cache-ului — ssl_ocsp_cache, iar pentru a suprascrie URL-ul procesorului OCSP specificat în certificat — ssl_ocsp_responder.
- Modul ngx_stream_set_module este inclus, permițând atribuirea unei valori variabile. server { listen 12345; set $true 1; }
- Directiva proxy_cookie_flags a fost adăugată pentru a specifica flaguri pentru cookie-urile în conexiunile proxy. De exemplu, pentru a adăuga flagul „httponly” la cookie-ul „one” și pentru toate celelalte cookie-uri flagurile „nosecure” și „samesite=strict” se poate utiliza construcția: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
O directivă similară, userid_flags, pentru a adăuga flaguri la cookie-uri a fost implementată și pentru modul ngx_http_userid.
- Au fost adăugate directivele „ssl_conf_command”, „proxy_ssl_conf_command”, „grpc_ssl_conf_command” și „uwsgi_ssl_conf_command”, prin care pot fi setate parametrii arbitrare pentru configurarea OpenSSL. De exemplu, pentru a prioritiza cifrurile ChaCha și pentru a ajusta extensiv cifrurile TLSv1.3, puteți specifica ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Directiva „ssl_reject_handshake” a fost adăugată, care prevede respingerea tuturor încercărilor de negociere. SSL-conexiuni (de exemplu, poate fi utilizată pentru a respinge toate solicitările cu nume de gazde necunoscute în câmpul 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; }
- Directiva proxy_smtp_auth a fost adăugată în proxy-ul de poștă, permițând autentificarea utilizatorului pe backend cu comanda AUTH și mecanismul PLAIN SASL.
- A fost adăugată directiva „keepalive_time”, care limitează timpul total de viață al fiecărei conexiuni keep-alive, după care conexiunea va fi închisă (nu trebuie confundată cu keepalive_timeout, care definește timpul de inactivitate după care conexiunea keep-alive se închide).
- A fost adăugată variabila $connection_time, prin care se poate obține informația despre durata conexiunii în secunde cu o precizie de milisecunde.
- În directivele „proxy_cache_path”, „fastcgi_cache_path”, „scgi_cache_path” și „uwsgi_cache_path” a fost adăugat parametrul „min_free”, care reglează dimensiunea cache-ului pe baza definiției dimensiunii minime a spațiului liber pe disc.
- Directivele „lingering_close”, „lingering_time” și „lingering_timeout” au fost adaptate pentru a funcționa cu HTTP/2.
- Codul de procesare a conexiunilor în HTTP/2 este similar cu implementarea HTTP/1.x. Suportul pentru setările separate „http2_recv_timeout”, „http2_idle_timeout” și „http2_max_requests” a fost suspendat în favoarea directivelor comune „keepalive_timeout” și „keepalive_requests”. Setările „http2_max_field_size” și „http2_max_header_size” au fost eliminate, înlocuite cu „large_client_header_buffers”.
- A fost adăugată o nouă opțiune de linie de comandă „-e”, care permite specificarea unui fișier alternativ pentru înregistrarea erorilor, care va fi utilizat în locul jurnalului setat în configurații. În locul numelui fișierului, se poate specifica o valoare specială stderr.
Sursa: opennet.ro
