Издание на 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