Рэліз nginx 1.18.0

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

У адпаведнасці з красавіцкай справаздачай кампаніі Netcraft nginx выкарыстоўваецца на 19.56% усіх актыўных сайтаў (год таму 20.73%, два гады таму 21.02%), што адпавядае другому месцы па папулярнасці ў дадзенай катэгорыі (доля Apache адпавядае 27.64%, Google - 10.03%, Microsoft IIS - 4.77%) . Пры гэтым пры разглядзе ўсіх сайтаў nginx захоўвае лідэрства і займае 36.91% рынка (год таму 27.52%), у той час як доля Apache адпавядае 24.73%, Microsoft IIS – 12.85%, Google – 3.42%.

Сярод мільёна самых наведвальных сайтаў у свеце доля nginx складае 25.54% (год таму 26.22%, два гады таму 23.76%). У цяперашні час пад кіраваннем nginx працуе каля 459 сайтаў (год таму 397). Па дадзеных W3Techs nginx выкарыстоўваецца на 31.9% сайтах з мільёна самых наведвальных, у красавіку мінулага года гэты паказчык складаў 41.8%, пазамінулага - 38% (спад тлумачыцца пераходам да асобнага ўліку http-сервера Cloudflare). Доля Apache за год знізілася з 43.6/38.9% да 8.6%, а доля Microsoft IIS з 8.3% да XNUMX%. У Расіі nginx выкарыстоўваецца на 78.9% самых наведвальных сайтаў (год таму - 81%).

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

  • Дададзена дырэктыва limit_req_dry_run, якая актывуе рэжым выпрабавальнага запуску, у якім не прымяняюцца абмежаванні на інтэнсіўнасць апрацоўкі запытаў (без rate limit), але працягваецца ўлік які выходзіць за ліміты колькасці запытаў у падзялянай памяці;
  • Дададзена дырэктыва абмежаваць_сухі_прабег, якая перакладае модуль ngx_http_limit_conn_module у рэжым выпрабавальнага запуску, пры якім лік злучэнняў не абмяжоўваецца, але ўлічваецца;
  • Дададзена дырэктывазатрымка_аўтэнтыфікацыі«, якая дазваляе дадаць затрымку неаўтарызаваных запытаў з кодам адказу 401 для скарачэння інтэнсіўнасці падбору пароляў і абароны ад нападаў, якія маніпулююць вымярэннем часу выканання аперацый (timing attack) пры звароце да сістэм, доступ да якіх абмежаваны паролем, вынікам падзапыту або Дж.В.Т. (JSON Web Token);
  • Дададзена падтрымка зменных у дырэктывах "limit_rate" і "limit_rate_after", а таксама ў дырэктывах "proxy_upload_rate" і "proxy_download_rate" модуля stream;
  • У дырэктыве grpc_pass дададзена падтрымка выкарыстання зменнай у параметры, які вызначае адрас. Калі адрас паказаны ў выглядзе даменнага імя, імя шукаецца сярод апісаных груп сервераў, і, калі не знойдзена, тое вызначаецца з дапамогай resolver'а;
  • Дададзены новыя зменныя $proxy_protocol_server_addr и $proxy_protocol_server_port, якія змяшчаюць адрас і порт сервера, атрыманыя з загалоўка пратакола PROXY;
  • У модулі ngx_stream_limit_conn_module дададзена пераменная $limit_conn_status, якая захоўвае вынік абмежавання колькасці злучэнняў: PASSED, REJECTED ці REJECTED_DRY_RUN;
  • У модулі ngx_http_limit_req_module дададзена пераменная $limit_req_status, якая захоўвае вынік абмежавання хуткасці паступлення запытаў: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN або REJECTED_DRY_RUN;
  • Па змаўчанні забяспечана зборка модуля ngx_http_postpone_filter_module;
  • Дададзена падтрымка пераключэння найменных блокаў "location" пры дапамозе метаду $r->internal_redirect(), які прадстаўляецца ўбудаваным інтэрпрэтатарам Perl. Дадзены метад зараз мае на ўвазе апрацоўку URI з экранаванымі знакамі;
  • Пры выкарыстанні ў блоку налад «upstream» дырэктывы «мешаніна»для арганізацыі балансавання нагрузкі з прывязкай кліента да сервера, у выпадку ўказання пустога значэння ключа зараз актывуецца рэжым раўнамернага балансавання (round-robin);
  • Дададзена падтрымка выкліку ioctl(FIONREAD), калі ён даступны, каб пазбегнуць чытання з хуткага злучэння на працягу доўгага часу.

Крыніца: opennet.ru

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