Излизането на nginx 1.26.0 с поддръжка на HTTP/3

След година разработка е публикувана нова стабилна версия на високопроизводителния HTTP сървър и многопротоколен прокси сървър nginx 1.26.0, която обединява измененията, натрупани в основната версия 1.25.x. В бъдеще всички промени в стабилната версия 1.26 ще бъдат насочени към отстраняване на сериозни грешки и уязвимости. Скоро ще бъде формирана основната версия nginx 1.27, в която ще продължи развитието на нови възможности. За обикновените потребители, които нямат задача да осигурят съвместимост с трети модули, се препоръчва да използват основната версия, на базата на която веднъж на три месеца се планират издания на търговския продукт Nginx Plus.

Според мартовския доклад на компанията Netcraft, около 243 млн. сайта работят под управлението на nginx (прошлата година 289 млн.). Nginx се използва на 18.15% от всички активни сайтове (прошлата година 18.94%, две години назад 20.08%), което му осигурява второ място по популярност в тази категория (делът на Apache е 20.09% (прошлата година 20.52%, две години назад 22.58%), Cloudflare — 14.12% (11.32%, 10.42%), Google — 10.41% (9.89%, 8.89%). Въпреки това, като се вземат предвид всички сайтове, nginx запазва лидерска позиция с 22.31% от пазара (прошлата година 25.94%, две години назад — 31.13%), докато делът на Apache е 20.17% (20.58, 23.08%), Cloudflare — 11.24% (10.17, 5.49%), OpenResty (платформа на базата на nginx и LuaJIT) — 7.93% (7.94%, 8.01%).

Сред милиона най-посещавани сайтов в света делът на nginx е 20.63% (преди година 21.37%, преди две години 21.79%), Cloudflare — 22.59% (преди година 21.62%), Apache httpd — 20.09% (21.18%). Според W3Techs nginx се използва на 34.3% от сайтовете сред милиона най-посещавани, през април миналата година този показател беше 34.5%, преди две години — 33.1%. Делът на Apache за година намаля от 32.2% до 30.1%, а делът на Microsoft IIS е намалял от 5.6% до 4.8%. Делът на Node.js се е увеличил от 2.4% до 3.2%, а делът на LiteSpeed от 11.8% до 12.9%.

Най-забележителните подобрения, добавени по време на формирането на основната версия 1.25.x:

  • Добавен е модулът ngx_http_v3 с експериментална поддръжка на протокола HTTP/3. За компилиране на модула е предвидена опция «--with-http_v3_module». HTTP/3 определя използването на протокола QUIC (Quick UDP Internet Connections) като транспорт за HTTP/2. QUIC е надстройка над протокола UDP, поддържащ мултиплексирането на множество връзки и осигуряващ методи за криптиране, равнозначни на TLS/SSL. Протоколът е създаден през 2013 г. от Google като алтернатива на комбинацията TCP+TLS за уеб, решаваща проблемите с дългото време за установяване и съгласуване на връзките в TCP и елиминираща забавянията при загуба на пакети в процеса на предаване на данни.
  • Добавена е отделна директива «http2» за селективно активиране на протокола HTTP/2 в свързаните сървъри (може да се използва в отделни блокове «server»). Параметърът «http2» в директивата «listen» е обявен за остарял.
  • Усилена е защитата от аномална активност на клиентите HTTP/2, и в частност, от DoS атаки от тип «Rapid Reset», при които се създава голямо количество незабавно сблъсквани потоци в рамките на едно HTTP/2 съединение. В конфигурацията по подразбиране подобни атаки достигат лимита на броя на заявките за съединение «keepalive_requests» (след всеки 1000 заявки съединението ще бъде сблъскано) и ограниченията «limit_req». За по-ранно реагиране на флуда от заявки чрез голям брой потоци е добавено допълнително ограничение, което не позволява да бъдат създавани по подразбиране повече от 256 (2 * max_concurrent_streams) нови потока на всеки цикъл на обработка на събития. Новото ограничение позволява започване на блокиране на заявки преди достигане на общото ограничение на броя на едновременните потоци, например, когато потоците се обработват асинхронно или се сблъскват.
  • В модула stream е добавена поддръжка виртуални сървъри, конфигурацията на които се определя в блока «server { … }» чрез директивата server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
  • Добавен е нов модул ngx_stream_pass_module, предназначен за предаване на приетите съединения директно в произволен слушащ сокет, свързан с такива модули като http, stream и mail. stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
  • В директивата listen на модула stream е реализирана поддръжка на параметри «deferred» (включва отложен accept), «accept_filter» (филтър за входящи връзки, прилаган преди извикване на функцията accept) и «setfib» (задание на таблицата за маршрутизиране).
  • За някои архитектури е реализирана поддръжка за определяне на размера на блока (cache line), използван за предаване на данни между кеша на CPU и паметта.
  • Подобрено управление на буферите, използвани при автоматичното разпознаване на HTTP/2 връзки.
  • Повишена производителност при стартиране на конфигурации с голям брой директиви «location».
  • Поддръжката на технологията Server push в HTTP/2 е премахната.
  • Поддръжката на директивата «ssl», която преди беше обявена за остаряла, е прекратена.

Стабилният релиз на проекта FreeNginx 1.26.0, развиващFork Nginx, беше публикуван преди две седмици. Разработката на Fork-а се води от Максим Дуннин, един от ключовите разработчици на Nginx. FreeNginx е позициониран като неправителствен проект, осигуряващ разработка на кодовата база на Nginx без корпоративна намеса.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster