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%), рдЬреЗ рдпрд╛ рд╢реНрд░реЗрдгреАрддреАрд▓ рд▓реЛрдХрдкреНрд░рд┐рдпрддреЗрдордзреНрдпреЗ рджреБрд╕рд▒реНрдпрд╛ рд╕реНрдерд╛рдирд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ (рдЕрдкрд╛рдЪреЗрдЪрд╛ рд╣рд┐рд╕реНрд╕рд╛ 27.64%, Google - 10.03%, рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯ) рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ 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%). рд╕рдзреНрдпрд╛, рд╕реБрдорд╛рд░реЗ 459 рджрд╢рд▓рдХреНрд╖ рд╡реЗрдмрд╕рд╛рдЗрдЯреНрд╕ Nginx рдЪрд╛рд▓рд╡рдд рдЖрд╣реЗрдд (рдПрдХ рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА 397 рджрд╢рд▓рдХреНрд╖). рджреНрд╡рд╛рд░реЗ рджрд┐рд▓реЗ рд╕рд░реНрд╡рд╛рдзрд┐рдХ рднреЗрдЯ рджрд┐рд▓реЗрд▓реНрдпрд╛ рджрд╢рд▓рдХреНрд╖рд╛рдВрдкреИрдХреА 3% рд╕рд╛рдЗрдЯрд╡рд░ W31.9Techs nginx рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдЧреЗрд▓реНрдпрд╛ рд╡рд░реНрд╖реА рдПрдкреНрд░рд┐рд▓рдордзреНрдпреЗ рд╣рд╛ рдЖрдХрдбрд╛ 41.8% рд╣реЛрддрд╛, рддреНрдпрд╛рдЖрдзреА - 38% (рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдЕрд░ HTTP рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╡рд┐рднрдХреНрдд рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧрдордзреНрдпреЗ рд╕рдВрдХреНрд░рдордгрд╛рджреНрд╡рд╛рд░реЗ рдШрдЯ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реА рдЖрд╣реЗ). Apache рдЪрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд░реНрд╖рднрд░рд╛рдд 43.6% рд╡рд░реВрди 38.9% рд╡рд░ рдШрд╕рд░рд▓рд╛ рдЖрдгрд┐ Microsoft IIS рдЪрд╛ рд╡рд╛рдЯрд╛ 8.6% рд╡рд░реВрди 8.3% рд╡рд░ рдЖрд▓рд╛. рд░рд╢рд┐рдпрд╛ nginx рдордзреНрдпреЗ рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗ рд╕рд░реНрд╡рд╛рдзрд┐рдХ рднреЗрдЯ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯреНрд╕рдкреИрдХреА 78.9% рд╡рд░ (рдПрдХ рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА - 81%).

1.17.x рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╢рд╛рдЦреЗрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рджрд░рдореНрдпрд╛рди рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рдгрд╛:

  • рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд▓реЗ рдорд░реНрдпрд╛рджрд╛_рд░реЗрдХ_ рдбреНрд░рд╛рдп_рд░реБрди, рдЬреЗ рдЯреНрд░рд╛рдпрд▓ рд░рди рдореЛрдб рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд┐рдирдВрддреА рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рддреАрд╡реНрд░рддреЗрд╡рд░ (рджрд░ рдорд░реНрдпрд╛рджреЗрд╢рд┐рд╡рд╛рдп) рдХреЛрдгрддреЗрд╣реА рдирд┐рд░реНрдмрдВрдз рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд╕рд╛рдорд╛рдпрд┐рдХ рдореЗрдорд░реАрдордзреАрд▓ рдорд░реНрдпрд╛рджрд╛ рдУрд▓рд╛рдВрдбрдгрд╛рд▒реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЗ;
  • рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд▓реЗ рдорд░реНрдпрд╛рджрд╛_рдХреЙрди_ рдбреНрд░рд╛рдп_рд░рди, рдЬреЗ ngx_http_limit_conn_module рдореЙрдбреНрдпреВрд▓рд▓рд╛ рдЪрд╛рдЪрдгреА рд░рди рдореЛрдбрдордзреНрдпреЗ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдХрдиреЗрдХреНрд╢рдирдЪреА рд╕рдВрдЦреНрдпрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реА рдЬрд╛рддреЗ;
  • рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд▓реЗ "рдСрде_рдбрд┐рд▓реЗ", рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдбрдЪреНрдпрд╛ рдЕрдВрджрд╛рдЬрд╛рдЪреА рддреАрд╡реНрд░рддрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 401 рдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдбрд╕рд╣ рдЕрдирдзрд┐рдХреГрдд рд╡рд┐рдирдВрддреНрдпрд╛рдВрдирд╛ рд╡рд┐рд▓рдВрдм рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рд╣рд▓реНрд▓реЗ, рдЬреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдорд░реНрдпрд╛рджрд┐рдд рдЖрд╣реЗ рдЕрд╢рд╛ рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛рдирд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреЗ рдореЛрдЬрдорд╛рдк (рдЯрд╛рдЗрдорд┐рдВрдЧ рд╣рд▓реНрд▓рд╛) рдкрд╛рд╕рд╡рд░реНрдб, рд╕рдмрдХреНрд╡реЗрд░реАрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд┐рдВрд╡рд╛ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА (JSON рд╡реЗрдм рдЯреЛрдХрди);
  • "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_module рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд▓реЗ $limit_conn_status, рдЬреЗ рдХрдиреЗрдХреНрд╢рдирдЪреА рд╕рдВрдЦреНрдпрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдХреЗрд▓реНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ: PASSED, REJECTED рдХрд┐рдВрд╡рд╛ REJECTED_DRY_RUN;
  • рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ ngx_http_limit_req_module рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд▓реЗ $limit_req_status, рдЬреЗ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдЪрд╛ рджрд░ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЗ: рдкрд╛рд╕, рд╡рд┐рд▓рдВрдмрд┐рдд, рдирд╛рдХрд╛рд░рд▓реЗрд▓реЗ, DELAYED_DRY_RUN рдХрд┐рдВрд╡рд╛ REJECTED_DRY_RUN;
  • рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдореЙрдбреНрдпреВрд▓ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ ngx_http_postpone_filter_module;
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдкрд░реНрд▓ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ $r->internal_redirect() рдкрджреНрдзрддреАрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди "рд▓реЛрдХреЗрд╢рди" рдмреНрд▓реЙрдХ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдЯреЙрдЧрд▓рд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рдпрд╛ рдкрджреНрдзрддреАрдордзреНрдпреЗ рдЖрддрд╛ рд╕реБрдЯрд▓реЗрд▓реНрдпрд╛ рд╡рд░реНрдгрд╛рдВрд╕рд╣ URI рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ;
  • "рдЕрдкрд╕реНрдЯреНрд░реАрдо" рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдмреНрд▓реЙрдХрдордзреНрдпреЗ "рдЕрдкрд╕реНрдЯреНрд░реАрдо" рдирд┐рд░реНрджреЗрд╢ рд╡рд╛рдкрд░рддрд╛рдирд╛рд╣реЕрд╢┬╗ рдХреНрд▓рд╛рдпрдВрдЯ-рд╕рд░реНрд╡реНрд╣рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧрд╕рд╣ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рд░рд┐рдХреНрдд рдХреА рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рд╕, рдПрдХрд╕рдорд╛рди рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧ рдореЛрдб (рд░рд╛рдЙрдВрдб-рд░реЙрдмрд┐рди) рдЖрддрд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛрдИрд▓;
  • рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рдЬрд▓рдж рдХрдиреЗрдХреНрд╢рдирдордзреВрди рд╡рд╛рдЪрди рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реНрдпрд╛рд╕ ioctl(FIONREAD) рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛