nginx 1.18.0 release

Pagkatapos ng isang taon ng pag-unlad kinakatawan ng bagong matatag na sangay ng high-performance na HTTP server at multiprotocol proxy server nginx 1.18.0, na sumisipsip sa mga pagbabagong naipon sa loob ng pangunahing sangay 1.17.x. Sa hinaharap, ang lahat ng pagbabago sa stable na branch 1.18 ay mauugnay sa pag-aalis ng mga seryosong error at kahinaan. Malapit nang mabuo ang pangunahing sangay ng nginx 1.19, kung saan magpapatuloy ang pagbuo ng mga bagong feature. Para sa mga ordinaryong user na walang gawaing tiyakin ang pagiging tugma sa mga module ng third-party, inirerekomenda gamitin ang pangunahing sangay, batay sa kung saan ang mga paglabas ng komersyal na produkto ng Nginx Plus ay nabuo tuwing tatlong buwan.

Ayon sa ulat ng Abril Ginagamit ang Netcraft nginx sa 19.56% ng lahat ng aktibong site (isang taon na ang nakalipas 20.73%, dalawang taon na ang nakalipas 21.02%), na tumutugma sa pangalawang lugar sa katanyagan sa kategoryang ito (ang bahagi ng Apache ay tumutugma sa 27.64%, Google - 10.03%, Microsoft IIS - 4.77%) . Kasabay nito, kapag isinasaalang-alang ang lahat ng mga site, pinapanatili ng nginx ang pamumuno nito at sinasakop ang 36.91% ng merkado (isang taon na ang nakalipas 27.52%), habang ang bahagi ng Apache ay tumutugma sa 24.73%, Microsoft IIS - 12.85%, Google - 3.42%.

Kabilang sa milyong pinaka binibisitang mga site sa mundo, ang bahagi ng nginx ay 25.54% (isang taon na ang nakalipas 26.22%, dalawang taon na ang nakalipas 23.76%). Sa kasalukuyan, humigit-kumulang 459 milyong mga website ang nagpapatakbo ng Nginx (397 milyon noong isang taon). Sa pamamagitan ng Ayon sa Ginagamit ang W3Techs nginx sa 31.9% ng mga site mula sa milyong pinaka-binisita, noong Abril noong nakaraang taon ang bilang na ito ay 41.8%, noong nakaraang taon - 38% (ang pagtanggi ay ipinaliwanag ng paglipat sa hiwalay na accounting ng Cloudflare http server). Bumagsak ang bahagi ng Apache sa buong taon mula 43.6% hanggang 38.9%, at ang bahagi ng Microsoft IIS mula 8.6% hanggang 8.3%. Sa Russia nginx ginamit sa 78.9% ng mga pinakabinibisitang site (isang taon na ang nakalipas - 81%).

Ang pinakakilalang mga pagpapahusay na idinagdag sa panahon ng pagbuo ng 1.17.x upstream branch:

  • Idinagdag ang direktiba limit_req_dry_run, na nag-a-activate ng trial run mode, kung saan walang mga paghihigpit na inilalapat sa intensity ng pagpoproseso ng kahilingan (nang walang limitasyon sa rate), ngunit patuloy na isinasaalang-alang ang bilang ng mga kahilingan na lumalampas sa mga limitasyon sa shared memory;
  • Idinagdag ang direktiba limit_conn_dry_run, na inililipat ang module ng ngx_http_limit_conn_module sa mode ng pagsubok, kung saan ang bilang ng mga koneksyon ay hindi limitado, ngunit isinasaalang-alang;
  • Nagdagdag ng direktiba "auth_delay", na nagbibigay-daan sa iyong magdagdag ng pagkaantala sa mga hindi awtorisadong kahilingan na may code ng pagtugon na 401 upang bawasan ang intensity ng paghula ng password at protektahan laban sa mga pag-atake, pagmamanipula sa pagsukat ng oras ng pagpapatupad ng mga operasyon (timing attack) kapag ina-access ang mga system kung saan limitado ang access password, resulta ng isang subquery o J.W.T. (JSON Web Token);
  • Nagdagdag ng suporta para sa mga variable sa "limit_rate" at "limit_rate_after" na mga direktiba, gayundin sa "proxy_upload_rate" at "proxy_download_rate" na mga direktiba ng stream module;
  • Sa direktiba grpc_pass nagdagdag ng suporta para sa paggamit ng variable sa isang parameter na tumutukoy sa isang address. Kung ang address ay tinukoy bilang isang domain name, ang pangalan ay hahanapin sa mga inilarawang grupo ng mga server, at, kung hindi matagpuan, pagkatapos ay tinutukoy gamit ang isang solver;
  • Nagdagdag ng mga bagong variable $proxy_protocol_server_addr ΠΈ $proxy_protocol_server_port, na naglalaman ng address ng server at port na nakuha mula sa PROXY protocol header;
  • Sa modyul ngx_stream_limit_conn_module idinagdag ang variable $limit_conn_status, na nag-iimbak ng resulta ng paglilimita sa bilang ng mga koneksyon: PASSED, REJECTED o REJECTED_DRY_RUN;
  • Sa modyul ngx_http_limit_req_module idinagdag ang variable $limit_req_status, na nag-iimbak ng resulta ng paglilimita sa rate ng pagdating ng mga kahilingan: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN o REJECTED_DRY_RUN;
  • Bilang default, ang module ay binuo ngx_http_postpone_filter_module;
  • Nagdagdag ng suporta para sa pag-toggling ng pinangalanang "lokasyon" na mga bloke gamit ang $r->internal_redirect() na paraan na ibinigay ng built-in na Perl interpreter. Kasama na ngayon sa paraang ito ang pagproseso ng mga URI na may mga nakatakas na character;
  • Kapag ginagamit ang "upstream" na direktiba sa "upstream" na mga setting blocksumiraΒ» para ayusin ang load balancing na may client-server binding, kung tumukoy ka ng walang laman na key value, ang unipormeng balancing mode (round-robin) ay aktibo na ngayon;
  • Nagdagdag ng suporta para sa pagtawag sa ioctl(FIONREAD) kung magagamit upang maiwasan ang pagbabasa mula sa isang mabilis na koneksyon sa paglipas ng panahon.

Pinagmulan: opennet.ru

Magdagdag ng komento