Π Π΅Π»ΠΈΠ· Π½Π° 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%, Π° Π΄ΡΠ»ΡŠΡ‚ Π½Π° Microsoft IIS ΠΎΡ‚ 8.6% Π΄ΠΎ 8.3%. Π’ Русия, nginx сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 78.9% ΠΎΡ‚ Π½Π°ΠΉ-посСщаванитС сайтовС (ΠΏΡ€Π΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° β€” 81%).

Най-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ подобрСния, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π² процСса Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° основната ΠΊΠ»ΠΎΠ½ 1.17.x:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° limit_req_dry_run, ΠΊΠΎΠΉΡ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π½ старт, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ограничСния Π·Π° интСнзивността Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° заявки (Π±Π΅Π· rate limit), Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° сС ΠΎΡ‚Ρ‡ΠΈΡ‚Π° изходящият Π±Ρ€ΠΎΠΉ Π½Π° заявкитС, ΠΊΠΎΠΉΡ‚ΠΎ надвишава Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π² сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° limit_conn_dry_run, ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΡ‰Π° ΠΌΠΎΠ΄ΡƒΠ»Π° ngx_http_limit_conn_module Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π½ пуск, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ броят Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π½Π΅ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Π½ΠΎ сС ΠΎΡ‚Ρ‡ΠΈΡ‚Π°;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Β«auth_delayΒ«, която позволява добавянС Π½Π° закъснСниС Π·Π° Π½Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ заявки с ΠΊΠΎΠ΄ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ 401, Π·Π° Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ интСнзивността Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡ€Π° Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π½Π° Π°Ρ‚Π°ΠΊΠΈ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Ρ‰ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (timing attack) ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ систСми, Π΄ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ с ΠΏΠ°Ρ€ΠΎΠ»Π°, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ ΠΏΠΎΠ΄Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ ΠΈΠ»ΠΈ JWT (JSON Web Token);
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈΡ‚Π΅ β€žlimit_rateβ€œ ΠΈ β€žlimit_rate_afterβ€œ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈΡ‚Π΅ β€žproxy_upload_rateβ€œ ΠΈ β€žproxy_download_rateβ€œ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° stream;
  • Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ grpc_pass Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π°, опрСдСлящ адрСса. Ако Π°Π΄Ρ€Π΅ΡΡŠΡ‚ Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΈΠΌΠ΅Ρ‚ΠΎ сС Ρ‚ΡŠΡ€ΡΠΈ срСд описанитС Π³Ρ€ΡƒΠΏΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ, Π°ΠΊΠΎ Π½Π΅ бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ, сС опрСдСля с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° resolver’a;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ $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Β» Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° Β«hashΒ» Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ с ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° към ΡΡŠΡ€Π²ΡŠΡ€Π°, Π² случай Π½Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π·Π½Π° стойност Π½Π° ΠΊΠ»ΡŽΡ‡Π°, сСга сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ балансиранС (round-robin);
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ioctl(FIONREAD), Π°ΠΊΠΎ Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΎ, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Π±ΡŠΡ€Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π·Π° дълго Π²Ρ€Π΅ΠΌΠ΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster