Po letu razvoja je predstavljena nova stabilna različica visokozmogljivega HTTP strežnika in večprotokolnega proxy strežnika nginx 1.20.0, ki vključuje spremembe, zbrane v glavni veji 1.19.x. V prihodnje bodo vse spremembe v stabilni veji 1.20 povezane z odpravo resnih napak in ranljivosti. Kmalu bo oblikovana glavna veja nginx 1.21, v kateri se bo nadaljevalo razvijanje novih možnosti. Običajnim uporabnikom, ki nimajo naloge zagotavljanja združljivosti s tretjimi moduli, se priporoča uporaba glavne veje, na osnovi katere se vsakih tri mesece oblikujejo izdaje komercialnega izdelka Nginx Plus.
V skladu s poročilom podjetja Netcraft iz marca nginx uporablja 20,15% vseh aktivnih spletnih mest (pred enim letom 19,56%, pred dvema letoma 20,73%), kar ustreza drugemu mestu po priljubljenosti v tej kategoriji (delež Apache znaša 25,38% (pred enim letom 27,64%), Google — 10,09%, Cloudflare — 8,51%. Pri tem, ko upoštevamo vsa spletna mesta, nginx ohranja vodstvo in zaseda 35,34% trga (pred enim letom 36,91%, pred dvema letoma — 27,52%), medtem ko delež Apache znaša 25,98%, OpenResty (platforma na osnovi nginx in LuaJIT) — 6,55%, Microsoft IIS — 5,96%.
Med milijonom najbolj obiskanih spletnih mest na svetu delež nginx znaša 25,55% (pred enim letom 25,54%, pred dvema letoma 26,22%). Trenutno pod upravljanjem nginx deluje približno 419 milijonov spletnih mest (pred enim letom 459 milijonov). Po podatkih W3Techs se nginx uporablja na 33,7% spletnih mest iz milijona najbolj obiskanih, aprila lani je ta številka znašala 31,9%, pred lani — 41,8% (upad pojasnjuje prehod na ločeno štetje http strežnika Cloudflare). Delež Apache se je v enem letu zmanjšal z 39,5% na 34%, delež Microsoft IIS pa z 8,3% na 7%. Delež LiteSpeed se je povečal s 6,3% na 8,4%, Node.js pa s 0,8% na 1,2%. V Rusiji se nginx uporablja na 79,1% najbolj obiskanih spletnih mest (pred enim letom — 78,9%).
Najbolj opazna izboljšanja, dodana med oblikovanjem glavne veje 1.19.x:
- Dodana je možnost preverjanja odjemalskih potrdil s sodelovanjem zunanjih storitev na osnovi protokola OCSP (Online Certificate Status Protocol). Za vključitev preverjanja je predlagana direktiva ssl_ocsp, za nastavitev velikosti predpomnilnika — ssl_ocsp_cache, za prepis URL OCSP obdelovalnika, navedenega v potrdilu — ssl_ocsp_responder.
- Vključeni so moduli ngx_stream_set_module, ki omogoča dodelitev vrednosti spremenljivki server { listen 12345; set $true 1; }
- Dodana je direktiva proxy_cookie_flags za določitev zastavic za piškotke v posredovanih povezavah. Na primer, za dodajanje zastavice «httponly» k piškotku «one» ter za vse druge piškotke zastavice «nosecure» in «samesite=strict» lahko uporabite konstrukcijo: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Podobna direktiva userid_flags za dodajanje zastavic k piškotkom je prav tako izvedena za modul ngx_http_userid.
- Dodane so direktive «ssl_conf_command», «proxy_ssl_conf_command», «grpc_ssl_conf_command» in «uwsgi_ssl_conf_command», s katerimi lahko določite poljubne parametre za nastavitev OpenSSL. Na primer, za prednostno obravnavo šifriranja ChaCha in razširjeno nastavitev šifriranja TLSv1.3 lahko navedete ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Dodana je direktiva «ssl_reject_handshake», ki predpisuje zavrnitev vseh poskusov usklajevanja. SSL-povezav (na primer, lahko jo uporabite za zavrnitev vseh zahtevkov z neznanimi imeni gostiteljev na polju 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; }
- V poštnem posredniku je dodana direktiva proxy_smtp_auth, ki omogoča avtorizacijo uporabnika na zadnjem delu z uporabo ukaza AUTH in mehanizma PLAIN SASL.
- Dodana je direktiva «keepalive_time», ki omejuje skupno življenje vsakega keep-alive povezave, po preteku katere se povezava zapre (ne zmešajte z keepalive_timeout, ki določa čas neaktivnosti, po katerem se keep-alive povezava zapre).
- Dodana je spremenljivka $connection_time, preko katere lahko pridobite informacije o trajanju povezave v sekundah z milisekundno natančnostjo.
- V direktive «proxy_cache_path», «fastcgi_cache_path», «scgi_cache_path» in «uwsgi_cache_path» je dodan parameter «min_free», ki uravnava velikost predpomnilnika na podlagi določanja minimalne velikosti prostega diskovnega prostora.
- Direktive «lingering_close», «lingering_time» in «lingering_timeout» so prilagojene za delovanje s HTTP/2.
- Obdelava povezav v HTTP/2 je bližnja implementaciji HTTP/1.x. Podpora za posamezne nastavitve „http2_recv_timeout“, „http2_idle_timeout“ in „http2_max_requests“ je bila opuščena v korist skupnih direktiv „keepalive_timeout“ in „keepalive_requests“. Nastavitve „http2_max_field_size“ in „http2_max_header_size“ so bile odstranjene, namesto njih pa je treba uporabiti „large_client_header_buffers“.
- Dodana je nova možnost ukazne vrstice „-e“, ki omogoča določitev alternativne datoteke za zapisovanje dnevnika napak, ki se bo uporabljala namesto dnevnika, določenega v nastavitvah. Namesto imena datoteke lahko navedete posebno vrednost stderr.
Izvor: opennet.ru
