Релиз на nginx 1.22.0

След 13 месеца разработка беше представена новата стабилна версия на високопроизводителния HTTP сървър и многопротоколния прокси сървър nginx 1.22.0, която обедини промените, натрупани в основната версия 1.21.x. В бъдеще всички промени в стабилната версия 1.22 ще се свързват с отстраняване на сериозни грешки и уязвимости. Скоро ще бъде създадена основната версия на nginx 1.23, в която ще продължи развитието на нови възможности. За обикновените потребители, които нямат задача да осигурят съвместимост с външни модули, се препоръчва да използват основната версия, на базата на която на всеки три месеца се създават издания на търговския продукт Nginx Plus.

Съгласно априлския отчет на компанията Netcraft, nginx се използва на 20.08% от всички активни сайтове (преди година 20.15%, преди две години 19.56%), което отговаря на второ място по популярност в тази категория (дялът на Apache е 22.58% (преди година 25.38%), Cloudflare — 10.42% (8.51%), Google — 8.89% (10.09%). При разглеждане на всички сайтове nginx запазва лидерството и заема 31.13% от пазара (преди година 35.34%, преди две години — 36.91%), докато дялът на Apache е 23.08% (25.98%), OpenResty (платформа на базата на nginx и LuaJIT) — 8.01% (6.55%), Cloudflare — 5.49%, Microsoft IIS — 4% (5.96%).

Сред милиона най-посещавани сайтове в света дялът на nginx е 21.79% (преди година 23.06%, преди две години 25.54%). В момента под управлението на nginx работят около 361 млн. сайта (преди година 419 млн.). Според данни на W3Techs nginx се използва на 33.5% от сайтовете от милиона най-посещавани, през май миналата година този показател беше 33.8%, а преди две години — 31.9%. Дялът на Apache за годината е намалял от 33.8% до 31.5%, а дялът на Microsoft IIS от 7% до 6%. Дялът на LiteSpeed е нараснал от 8.5% до 12.1%, а на Node.js от 1.2% до 1.9%. В Русия nginx се използва на 79.8% от най-посещаваните сайтове (преди година — 79.1%).

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

  • В директивите „proxy_ssl_certificate“, „proxy_ssl_certificate_key“, „grpc_ssl_certificate“, „grpc_ssl_certificate_key“, „uwsgi_ssl_certificate“ и „uwsgi_ssl_certificate_key“ е добавена поддръжка на променливи.
  • В пощенския прокси модул е добавена поддръжка на режима «pipelining» за предаване на множество POP3 или IMAP заявки в една връзка, както и е добавена нова директива «max_errors», която определя максималния брой протоколни грешки, след които връзката ще бъде затворена.
  • Реализирано е предаване на заглавията «Auth-SSL-Protocol» и «Auth-SSL-Cipher» сървър автентикация на пощенския прокси.
  • В модула stream е добавена поддръжка за TLS разширение ALPN. За определяне на списъка с поддържани ALPN протоколи (h2, http/1.1) е предложена директивата ssl_alpn, а за получаване на информация за съгласувания с клиента ALPN протокол е добавена променливата $ssl_alpn_protocol.
  • В модула stream е добавен параметър «fastopen», който включва режим «TCP Fast Open» за слушащи сокети.
  • Настанено е екранирането на символите «»», «», «\», «^», «`», «{«, «|» и «}» при проксиране с промяна на URI.
  • В модула stream е добавена директива proxy_half_close, с помощта на която може да се настрои поведението при затваряне на проксираната TCP връзка от едната страна («TCP half-close»).
  • В модула ngx_http_mp4_module е добавена нова директива mp4_start_key_frame за предаване на видео поток, започвайки от ключов кадър.
  • Добавена е променливата $ssl_curve, която връща типа на елиптичната крива, избрана за съгласуване на ключове в TLS сесия.
  • В директивата «sendfile_max_chunk» стойността по подразбиране е променена на 2 мегабайта;
  • Осигурена е съвместимост с OpenSSL 3.0 библиотеката. Добавена е поддръжка на извикването на SSL_sendfile() при ползване на OpenSSL 3.0.
  • По подразбиране е активирано изграждане с библиотеката PCRE2, предоставяща функции за обработка на регулярни изрази.
  • При зареждане на сертификати сървър е установено използването на нива на сигурност, поддържани от OpenSSL 1.1.0 и задавани с параметъра «@SECLEVEL=N» в директивата ssl_ciphers.
  • Поддръжката на експортивен набор от шифри е прекратена.
  • В API за филтриране на тялото на заявката е разрешена буферизация на обработваните данни.
  • На платформата FreeBSD е подобрена поддръжката на системния извикване sendfile, предназначен за организиране на директна предаване на данни между файлов дескриптор и сокет. Постоянно е активиран режим sendfile(SF_NODISKIO) и е добавена поддръжка на режим sendfile(SF_NOCACHE).
  • Поддръжката на установяване на HTTP/2 връзки с използването на разширение NPN (Next Protocol Negotiation) вместо ALPN е прекратена.
  • Осигурена е блокировка на HTTP/1.0 заявки, включващи HTTP заглавие «Transfer-Encoding» (появи се в версията на протокола HTTP/1.1).
  • Усилена е защита срещу атаки от клас «HTTP Request Smuggling» на системи фронтенд-бекенд, които позволяват внедряване в съдържанието на заявки на други потребители, обработвани в същия поток между фронтенда и бекенда. Nginx вече винаги връща грешка при използване на метода CONNECT; при едновременна спецификация на заглавията «Content-Length» и «Transfer-Encoding»; при наличие на интервали или контролни символи в заявка, име на HTTP заглавие или в стойността на заглавие «Host».

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

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