Издаване на nginx 1.28.0 и форка FreeNginx 1.28.0

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

Според мартовския доклад на компанията Netcraft, под управлението на nginx работят около 245 млн. сайта (преди година 243 млн., преди две години 289 млн.). Nginx се използва на 17.89% от всички активни сайтове (преди година 18.15%, преди две години 18.94%), което му съответства на първото място по популярност в тази категория (дялът на Apache е 16.03% (преди година 20.09%, преди две години 20.52%), Cloudflare — 17.81% (14.12%, 11.32%), Google — 9.89% (10.41%, 9.89%).

При разглеждане на всички сайтове, nginx запазва лидерството и заема 20.48% от пазара (преди година 22.31%, преди две години — 25.94%), докато дялът на Apache е 16.03% (20.17%, 20.58%), Cloudflare — 12.87% (11.24%, 10.17%), OpenResty (платформа на базата на nginx и LuaJIT) — 9.36% (7.93%, 7.94%).

Сред милиона най-посещавани сайтове в света, nginx заема второ място с дял 20.37% (преди година 20.63%, преди две години 21.37%). Първото място заема Cloudflare — 22.32% (преди година 22.59%, преди две години 21.62%). Дялът на Apache httpd е 17.95% (20.09%, 21.18%).

Според данни от W3Techs, nginx се използва на 33.8% от сайтовете от милиона най-посещавани (през април миналата година този показател беше 34.3%, преди две години — 34.5%). Дялът на Apache е намалял за една година от 30.1% до 26.3%, а дялът на Microsoft IIS е намалял от 5% до 4%. Дялът на Node.js е нараснал от 3.2% до 4.4%, а дялът на LiteSpeed е нараснал от 12.9% до 14.6%.

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

  • За връзки, използващи протокол QUIC, е добавена поддръжка на алгоритъма за управление на мрежовото претоварване CUBIC (RFC 9438), чиято работа се свежда до постепенно увеличение на размера на прозореца до появата на загуба на пакети, след което размерът на прозореца се възстановява до стойността преди загубата. В проведените тестове използването на CUBIC е намалило времето за предаване на файл с размер 500MB с 24% при закъснения от 40ms и BDP 750K (Bandwidth Delay Product) и с 73% при закъснения от 100ms и BDP 9M.
  • В модула stream е добавена поддръжка за проверка на отзоваването на клиентските сертификати, използвайки протокола OCSP (Online Certificate Status Protocol).
  • В модула stream е реализирана поддръжка на техниката за проверка на отзива на сертификати OCSP Stapling, която позволява при съгласуването на TLS връзка заверен от удостоверяващия център отговор OCSP да бъде предоставен от сървера, обслужващ сайта, без необходимост от директно обръщение към удостоверяващия център.
  • При стартиране и актуализиране на конфигурацията е реализирано кеширане SSL сертификати, ключове и CRL (Списък на отхвърлени сертификати).
  • Добавени са възможности за намаляване на потреблението на ресурси и натоварването на CPU при използване на TLS в конфигурации с голямо количество server и location блокове. Добавените промени позволяват вместо създаването на отделен SSL контекст (SSL_CTX в OpenSSL) за всеки блок конфигурация, да се използва вече съществуващият SSL контекст от родителския блок.
  • В директивата «ssl_client_certificate» е осигурена поддръжка на сертификати с допълнителна информация.
  • За проверка на клиентските SSL сертификати директивата «ssl_client_certificate» вече не е задължителна.
  • В модула ngx_mail_proxy_module е добавена поддръжка за специфичен за SmarterMail режим IMAP LOGIN с неетикетиран отговор CAPABILITY.
  • В модула ngx_http_proxy_module е добавена директива «proxy_pass_trailers», която позволява предаване на полета на заглавия в края на отговора от прокси сървъра към клиента.
  • В директивата „server“, използвана в блока „upstream“, е добавена поддръжка на параметъра „resolve“, който включва проследяване на промени IP адреси в използваното доменно име и автоматично обновяване на конфигурацията на блока „upstream“ без нужда от рестартиране на nginx в случай на промяна на адреса.
  • Добавена е възможността за използване на променливи в директивите «proxy_limit_rate», «fastcgi_limit_rate», «scgi_limit_rate» и «uwsgi_limit_rate».
  • В директивите „proxy_bind“, „fastcgi_bind“, „grpc_bind“, „memcached_bind“, „scgi_bind“ и „uwsgi_bind“, както и като клиентски адрес в модула ngx_http_realip_module, е разрешено указването на IPv6 адреси в квадратни скобки без номер на порт.
  • Добавена е директива «keepalive_min_timeout», определяща таймаута, в който nginx няма да затваря keep-alive свързването с клиента.
  • По подразбиране са деактивирани протоколите TLSv1 и TLSv1.1.
  • Решени са проблеми с дългото зареждане на конфигурационни файлове поради повторно разбиране на един и същ набор от TLS сертификати, ключове и списъци на удостоверяващи центрове. Ускорено е презареждането на конфигурацията чрез повторно използване на неизменени TLS обекти като сертификати, ключове и CRL. За деактивиране на наследяването на обекти при актуализиране на конфигурацията е добавена директивата «ssl_object_cache_inheritable».
  • Добавен кеш за сертификати и ключове, заредени с помощта на променливи в директиви (например, «ssl_certificate /etc/ssl/$ssl_server_name.crt»). За управление на кеша са добавени директиви «ssl_certificate_cache», «proxy_ssl_certificate_cache», «grpc_ssl_certificate_cache» и «uwsgi_ssl_certificate_cache». През посочените директиви може да се настрои максималният размер на кеша, времето на действие на записите и времето за почистване на ненужните записи. Например: «ssl_certificate_cache max=1000 inactive=20s valid=1m;».
  • Намалено е потреблението на памет при обработка на дългосрочни заявки в конфигурации, в които се използват директивите «gzip», «gunzip», «ssi», «sub_filter» или «grpc_pass».
  • Максималният размер на кешируемите във споделената памет SSL сесии е увеличен до 8192.
  • Настройката на с биоп библиотеката Musl е оптимизирана.
  • Извършена е работа по оптимизация на производителността и отстраняване на грешки в реализирането на HTTP/3.

Допълнително може да се отбележи публикуването на релиза на проекта FreeNginx 1.28.0, който развива форка на Nginx. Разработката на форка се води от Максим Дунчин, един от ключовите разработчици на Nginx. FreeNginx се позиционира като некомерсиален проект, който осигурява разработване на кодовата база на Nginx без корпоративна намеса. Сред специфичните промени в клона FreeNginx 1.28:

  • Параметърът «off» в директивата «pid», който деактивира създаването на PID файл.
  • Ограничение на интензивността на записите в логовете за грешки за защита от запълване на логовете с типични съобщения.
  • Реализация на параметъра multipath в директивата listen за поддръжка на Multipath TCP.
  • Поддръжка на HTTP заглавието «Age» за определяне на времето за живот на записите в кеша.
  • Добавяне на методи за удостоверяване XOAUTH2 и OAUTHBEARER в модула mail_proxy.

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

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