ืžื”ื“ื•ืจืช nginx 1.18.0

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื— ืžื™ื•ืฆื’ ืขืœ ื™ื“ื™ ืขื ืฃ ื™ืฆื™ื‘ ื—ื“ืฉ ืฉืœ ืฉืจืช HTTP ื‘ืขืœ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื•ืฉืจืช ืคืจื•ืงืกื™ ืžืจื•ื‘ื” ืคืจื•ื˜ื•ืงื•ืœื™ื 1.18.0, ืฉืงืœื˜ื” ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉื”ืฆื˜ื‘ืจื• ื‘ืชื•ืš ื”ืขื ืฃ ื”ืจืืฉื™ 1.17.x. ื‘ืขืชื™ื“, ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ืขื ืฃ ื”ื™ืฆื™ื‘ 1.18 ื™ื”ื™ื• ืงืฉื•ืจื™ื ืœื‘ื™ื˜ื•ืœ ืฉื’ื™ืื•ืช ื•ืคื’ื™ืขื•ื™ื•ืช ื—ืžื•ืจื•ืช. ื‘ืงืจื•ื‘ ื™ื•ื•ืฆืจ ื”ืกื ื™ืฃ ื”ืจืืฉื™ ืฉืœ nginx 1.19, ืฉื‘ืชื•ื›ื• ื™ืžืฉืš ื”ืคื™ืชื•ื— ืฉืœ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช. ืขื‘ื•ืจ ืžืฉืชืžืฉื™ื ืจื’ื™ืœื™ื ืฉืื™ืŸ ืœื”ื ืืช ื”ืžืฉื™ืžื” ืœื”ื‘ื˜ื™ื— ืชืื™ืžื•ืช ืขื ืžื•ื“ื•ืœื™ื ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืžื•ืžืœืฅ ื”ืฉืชืžืฉ ื‘ืกื ื™ืฃ ื”ืจืืฉื™, ืฉืขืœ ื‘ืกื™ืกื• ื ื•ืฆืจื•ืช ืžื”ื“ื•ืจื•ืช ืฉืœ ื”ืžื•ืฆืจ ื”ืžืกื—ืจื™ Nginx Plus ื›ืœ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื.

ื‘ื”ืชืื ื“ื•"ื— ืืคืจื™ืœ Netcraft nginx ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื‘-19.56% ืžื›ืœืœ ื”ืืชืจื™ื ื”ืคืขื™ืœื™ื (ืœืคื ื™ ืฉื ื” 20.73%, ืœืคื ื™ ืฉื ืชื™ื™ื 21.02%), ืžื” ืฉืžืชืื™ื ืœืžืงื•ื ื”ืฉื ื™ ื‘ืคื•ืคื•ืœืจื™ื•ืช ื‘ืงื˜ื’ื•ืจื™ื” ื–ื• (ื”ื ืชื— ืฉืœ Apache ืžืชืื™ื ืœ-27.64%, ื’ื•ื’ืœ - 10.03%, ืžื™ืงืจื•ืกื•ืคื˜ IIS - 4.77% . ื™ื—ื“ ืขื ื–ืืช, ื›ืฉื‘ื•ื—ื ื™ื ืืช ื›ืœ ื”ืืชืจื™ื, nginx ืฉื•ืžืจืช ืขืœ ืžื•ื‘ื™ืœื•ืชื” ื•ืชื•ืคืกืช 36.91% ืžื”ืฉื•ืง (ืœืคื ื™ ืฉื ื” 27.52%), ื‘ืขื•ื“ ื ืชื— ืืคืืฆ'ื™ ืžืงื‘ื™ืœ ืœ-24.73%, Microsoft IIS - 12.85%, ื’ื•ื’ืœ - 3.42%.

ื‘ื™ืŸ ืžื™ืœื™ื•ืŸ ื”ืืชืจื™ื ื”ืžื‘ื•ืงืจื™ื ื‘ื™ื•ืชืจ ื‘ืขื•ืœื, ื—ืœืงื” ืฉืœ nginx ื”ื•ื 25.54% (ืœืคื ื™ ืฉื ื” 26.22%, ืœืคื ื™ ืฉื ืชื™ื™ื 23.76%). ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ื›-459 ืžื™ืœื™ื•ืŸ ืืชืจื™ื ืžืคืขื™ืœื™ื ืืช Nginx (397 ืžื™ืœื™ื•ืŸ ืœืคื ื™ ืฉื ื”). ืขืœ ื™ื“ื™ ืขืœ ืคื™ W3Techs nginx ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื‘-31.9% ืžื”ืืชืจื™ื ืžืชื•ืš ืžื™ืœื™ื•ืŸ ื”ื’ื•ืœืฉื™ื ื‘ื™ื•ืชืจ, ื‘ืืคืจื™ืœ ืืฉืชืงื“ ืขืžื“ ื”ื ืชื•ืŸ ื”ื–ื” ืขืœ 41.8%, ื‘ืฉื ื” ืฉืœืคื ื™ ื›ืŸ - 38% (ื”ื™ืจื™ื“ื” ืžื•ืกื‘ืจืช ื‘ืžืขื‘ืจ ืœื—ืฉื‘ื•ื ืื•ืช ื ืคืจื“ืช ืฉืœ ืฉืจืช ื”-http Cloudflare). ืžื ื™ื™ืช ืืคืืฆ'ื™ ื™ืจื“ื” ื‘ืžื”ืœืš ื”ืฉื ื” ืž-43.6% ืœ-38.9%, ื•ืžื ื™ื™ืช Microsoft IIS ืž-8.6% ืœ-8.3%. ื‘ืจื•ืกื™ื” nginx ืžืฉืžืฉ ื‘-78.9% ืžื”ืืชืจื™ื ื”ืžื‘ื•ืงืจื™ื ื‘ื™ื•ืชืจ (ืœืคื ื™ ืฉื ื” - 81%).

ื”ืฉื™ืคื•ืจื™ื ื”ื‘ื•ืœื˜ื™ื ื‘ื™ื•ืชืจ ืฉื ื•ืกืคื• ื‘ืžื”ืœืš ื”ืคื™ืชื•ื— ืฉืœ ืขื ืฃ 1.17.x ื‘ืžืขืœื” ื”ื–ืจื:

  • ื ื•ืกืคื” ื”ื ื—ื™ื” limit_req_dry_run, ื”ืžืคืขื™ืœ ืืช ืžืฆื‘ ื”ืคืขืœืช ื”ื ื™ืกื™ื•ืŸ, ื‘ื• ืœื ืžื•ื—ืœื•ืช ื”ื’ื‘ืœื•ืช ืขืœ ืขื•ืฆืžืช ืขื™ื‘ื•ื“ ื”ื‘ืงืฉื•ืช (ืœืœื ื”ื’ื‘ืœืช ืชืขืจื™ืฃ), ืืš ืžืžืฉื™ื›ื” ืœื”ื™ืœืงื— ื‘ื—ืฉื‘ื•ืŸ ืžืกืคืจ ื”ื‘ืงืฉื•ืช ื”ื—ื•ืจื’ื•ืช ืžื”ืžื’ื‘ืœื•ืช ื‘ื–ื™ื›ืจื•ืŸ ื”ืžืฉื•ืชืฃ;
  • ื ื•ืกืคื” ื”ื ื—ื™ื” limit_conn_dry_run, ืืฉืจ ืžืขื‘ื™ืจ ืืช ืžื•ื“ื•ืœ ngx_http_limit_conn_module ืœืžืฆื‘ ืจื™ืฆืช ืžื‘ื—ืŸ, ืฉื‘ื• ืžืกืคืจ ื”ื—ื™ื‘ื•ืจื™ื ืื™ื ื• ืžื•ื’ื‘ืœ, ืืœื ื ืœืงื— ื‘ื—ืฉื‘ื•ืŸ;
  • ื ื•ืกืคื” ื”ื ื—ื™ื”"ืื™ื—ื•ื™_ืขื›ื‘", ื”ืžืืคืฉืจ ืœืš ืœื”ื•ืกื™ืฃ ืขื™ื›ื•ื‘ ืœื‘ืงืฉื•ืช ืœื ืžื•ืจืฉื•ืช ืขื ืงื•ื“ ืชื’ื•ื‘ื” ืฉืœ 401 ื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ืขื•ืฆืžืช ื ื™ื—ื•ืฉ ื”ืกื™ืกืžื” ื•ืœื”ื’ืŸ ืžืคื ื™ ื”ืชืงืคื•ืช, ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžื“ื™ื“ืช ื–ืžืŸ ื”ื‘ื™ืฆื•ืข ืฉืœ ืคืขื•ืœื•ืช (ื”ืชืงืคืช ืชื–ืžื•ืŸ) ื‘ืขืช ื’ื™ืฉื” ืœืžืขืจื›ื•ืช ืฉื”ื’ื™ืฉื” ืืœื™ื”ืŸ ืžื•ื’ื‘ืœืช ืกื™ืกืžื”, ืชื•ืฆืื” ืฉืœ ืฉืื™ืœืชืช ืžืฉื ื” ืื• Jwt (JSON Web Token);
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืฉืชื ื™ื ื‘ื”ื•ืจืื•ืช "limit_rate" ื•-"limit_rate_after", ื›ืžื• ื’ื ื‘ื”ื ื—ื™ื•ืช "proxy_upload_rate" ื•-"proxy_download_rate" ืฉืœ ืžื•ื“ื•ืœ ื”ื–ืจื;
  • ื‘ื”ื ื—ื™ื” grpc_pass ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื” ื‘ืคืจืžื˜ืจ ื”ืžื’ื“ื™ืจ ื›ืชื•ื‘ืช. ืื ื”ื›ืชื•ื‘ืช ืžืฆื•ื™ื ืช ื›ืฉื ืชื—ื•ื, ื”ืฉื ื™ืชื‘ืฆืข ื—ื™ืคื•ืฉ ื‘ื™ืŸ ืงื‘ื•ืฆื•ืช ื”ืฉืจืชื™ื ื”ืžืชื•ืืจื•ืช, ื•ืื ืœื ื ืžืฆื, ืื–ื™ ื ืงื‘ืข ื‘ืืžืฆืขื•ืช ืคื•ืชืจ;
  • ื ื•ืกืคื• ืžืฉืชื ื™ื ื—ื“ืฉื™ื $proxy_protocol_server_addr ะธ $proxy_protocol_server_port, ื”ืžื›ื™ืœื™ื ืืช ื›ืชื•ื‘ืช ื”ืฉืจืช ื•ื”ื™ืฆื™ืื” ืฉื”ืชืงื‘ืœื• ืžื›ื•ืชืจืช ืคืจื•ื˜ื•ืงื•ืœ PROXY;
  • ื‘ืžื•ื“ื•ืœ ืžื•ื“ื•ืœ ngx_stream_limit_conn_modul ืžืฉืชื ื” ื ื•ืกืฃ $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;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขื‘ืจ ื‘ื™ืŸ ื‘ืœื•ืงื™ื ื‘ืฉื "ืžื™ืงื•ื" ื‘ืฉื™ื˜ืช $r->internal_redirect() ื”ืžืกื•ืคืงืช ืขืœ ื™ื“ื™ ืžืชื•ืจื’ืžืŸ Perl ื”ืžื•ื‘ื ื”. ืฉื™ื˜ื” ื–ื• ื›ื•ืœืœืช ื›ืขืช ืขื™ื‘ื•ื“ URIs ืขื ืชื•ื•ื™ื ื‘ืจื™ื—ื”;
  • ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ื”ื ื—ื™ื™ืช "Upstream" ื‘ื‘ืœื•ืง ื”ื”ื’ื“ืจื•ืช "Upstream".ืฉื™ืจื™ืยป ื›ื“ื™ ืœืืจื’ืŸ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ืขื ื›ืจื™ื›ืช ืฉืจืช-ืœืงื•ื—, ืื ืชืฆื™ื™ืŸ ืขืจืš ืžืคืชื— ืจื™ืง, ืžืฆื‘ ื”ืื™ื–ื•ืŸ ื”ืื—ื™ื“ (ืกื™ื‘ื•ื‘-ืจื•ื‘ื™ืŸ) ืžื•ืคืขืœ ื›ืขืช;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืงืจื™ืื” ืœ-ioctl(FIONREAD) ืื ื–ืžื™ื ื” ื›ื“ื™ ืœืžื ื•ืข ืงืจื™ืื” ืžื—ื™ื‘ื•ืจ ืžื”ื™ืจ ืœืื•ืจืš ื–ืžืŸ.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”