Рэліз nginx 1.20.0

Пасля года распрацоўкі прадстаўлена новая стабільная галіна высокапрадукцыйнага HTTP-сервера і шматпратакольнага проксі-сервера nginx 1.20.0, якая ўвабрала ў сябе змены, назапашаныя ў асноўнай галінцы 1.19.x. У далейшым усе змены ў стабільнай галінцы 1.20 будуць звязаныя з ухіленнем сур'ёзных памылак і ўразлівасцяў. У хуткім часе будзе сфарміравана асноўная галінка nginx 1.21, у якой будзе працягнута развіццё новых магчымасцяў. Для звычайных карыстачоў, у якіх няма задачы забяспечыць сумяшчальнасць са іншымі модулямі, рэкамендуецца выкарыстоўваць асноўную галінку, на базе якой раз у тры месяцы фармуюцца выпускі камерцыйнага прадукта Nginx Plus.

У адпаведнасці з сакавіцкай справаздачай кампаніі Netcraft nginx выкарыстоўваецца на 20.15% усіх актыўных сайтаў (год таму 19.56%, два гады таму 20.73%), што адпавядае другому месцы па папулярнасці ў дадзенай катэгорыі (доля Apache адпавядае 25.38% (год таму 27.64%), Google - 10.09%, Cloudflare - 8.51%, пры гэтым пры разглядзе ўсіх сайтаў nginx захоўвае лідэрства і займае 35.34% рынку (год таму 36.91%, два гады таму - 27.52%), у той час як доля Apache адпавядае 25.98%, OpenResty ( платформа на базе nginx і LuaJIT.) – 6.55%, Microsoft IIS – 5.96%.

Сярод мільёна самых наведвальных сайтаў у свеце доля nginx складае 25.55% (год таму 25.54%, два гады таму 26.22%). У цяперашні час пад кіраваннем nginx працуе каля 419 сайтаў (год таму 459). Па дадзеных W3Techs nginx выкарыстоўваецца на 33.7% сайтаў з мільёна самых наведвальных, у красавіку мінулага года гэты паказчык складаў 31.9%, пазамінулага - 41.8% (спад тлумачыцца пераходам да асобнага ўліку http-сервера Cloudflare). Доля Apache за год знізілася з 39.5/34% да 8.3%, а доля Microsoft IIS з 7% да 6.3%. Дзель LiteSpeed ​​вырасла з 8.4% да 0.8%, а Node.js з 1.2% да 79.1%. У Расіі nginx выкарыстоўваецца на 78.9% самых наведвальных сайтаў (год таму – XNUMX%).

Найбольш прыкметныя паляпшэнні, дададзеныя падчас фармавання асноўнай галінкі 1.19.x:

  • Дададзена магчымасць паверкі кліенцкіх сертыфікатаў з прыцягненнем знешніх службаў на базе пратакола OCSP (Online Certificate Status Protocol). Для ўключэння праверкі прапанавана дырэктыва ssl_ocsp, для наладкі памеру кэша - ssl_ocsp_cache, для пераазначэння URL OCSP-апрацоўшчыка, паказанага ў сертыфікаце - ssl_ocsp_responder.
  • У склад уключаны модуль ngx_stream_set_module, які дазваляе прысвоіць значэнне зменнай server { listen 12345; set $true 1; }
  • Дададзена дырэктыва proxy_cookie_flags для ўказання сцягоў для Cookie у праксаваных злучэннях. Напрыклад, для дадання да Cookie "one" сцяга "httponly", а для ўсіх астатніх Cookie сцягоў "nosecure" і "samesite=strict" можна выкарыстоўваць канструкцыю: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;

    Падобная дырэктыва userid_flags для дадання сцягоў да Cookie таксама рэалізавана для модуля ngx_http_userid.

  • Дададзеныя дырэктывы "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" і "uwsgi_ssl_conf_command", пры дапамозе якіх можна задаць адвольныя параметры для налады OpenSSL. Напрыклад, для прыярытызацыі шыфраў ChaCha і пашыранай налады шыфраў TLSv1.3 можна паказаць ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • Дададзена дырэктыва "ssl_reject_handshake", якая загадвае адхіляць усе спробы ўзгаднення SSL-злучэнняў (напрыклад, можна выкарыстоўваць для адхілення ўсіх зваротаў з невядомымі імёнамі хастоў у поле 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; }
  • У паштовы проксі дададзена дырэктыва proxy_smtp_auth, якая дазваляе аўтэнтыфікаваць карыстальніка на бэкендзе пры дапамозе каманды AUTH і механізма PLAIN SASL.
  • Дададзена дырэктыва "keepalive_time", якая абмяжоўвае агульны час жыцця кожнага keep-alive злучэння, пасля заканчэння якога злучэнне будзе зачынена (не блытаць з keepalive_timeout, які вызначае час неактыўнасці, пасля якога keep-alive злучэнне зачыняецца).
  • Дададзена зменная $connection_time, праз якую можна атрымаць інфармацыю аб працягласці злучэння ў секундах з мілісекунднай дакладнасцю.
  • У дырэктывы "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" і "uwsgi_cache_path" дададзены параметр "min_free", які рэгулюе памер кэша на аснове вызначэння мінімальнага памеру вольнай дыскавай прасторы.
  • Дырэктывы "lingering_close", "lingering_time" і "lingering_timeout" адаптаваны для працы з HTTP/2.
  • Код апрацоўкі злучэнняў у HTTP/2 набліжаны да рэалізацыі HTTP/1.x. Падтрымка асобных налад "http2_recv_timeout", "http2_idle_timeout" і "http2_max_requests" спынена на карысць агульных дырэктыў "keepalive_timeout" і "keepalive_requests". Выдалены налады "http2_max_field_size" і "http2_max_header_size", замест якіх варта выкарыстоўваць "large_client_header_buffers".
  • Дададзена новая опцыя каманднага радка "-e", якая дазваляе паказаць альтэрнатыўны файл для запісу лога памылак, які будзе выкарыстоўвацца замест лога, зададзенага ў наладах. Замест імя файла можна пазначыць спецыяльнае значэнне stderr.

Крыніца: opennet.ru

Дадаць каментар