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

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

Според мартенския доклад на компанията Netcraft, под управление на nginx работят около 243 млн. сайта (преди година 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» за selectively включване на протокола 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, развиваща клон на Nginx, беше публикувана преди две седмици. Разработката на клона се ръководи от Максим Дунин, един от ключовите разработчици на Nginx. FreeNginx се позиционира като некомерсиален проект, който осигурява разработването на кодовата база на Nginx без корпоративна намеса.

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

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