Релиз на nginx 1.20.0

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

Според мартенския доклад на компанията Netcraft, nginx се използва на 20.15% от всички активни сайтове (преди година 19.56%, две години по-рано 20.73%), което съответства на второ място по популярност в тази категория (долята на Apache е 25.38% (преди година 27.64%), Google — 10.09%, Cloudflare — 8.51%. При разглеждане на всички сайтове, nginx запазва лидерството и заема 35.34% от пазара (преди година 36.91%, две години по-рано — 27.52%), докато долята на Apache е 25.98%, OpenResty (платформа на базата на nginx и LuaJIT) — 6.55%, Microsoft IIS — 5.96%.

Сред милиона най-посещавани сайтове в света, долята на nginx е 25.55% (преди година 25.54%, две години по-рано 26.22%). В момента под управлението на nginx работят около 419 млн. сайта (преди година 459 млн.). Според данни на W3Techs, nginx се използва на 33.7% от сайтовете в милиона най-посещавани, през април миналата година този процент беше 31.9%, а преди две години — 41.8% (падението е обяснено с преминаването към отделно отчитане на http-сървъра Cloudflare). Долята на Apache за година е спаднала от 39.5% до 34%, а долята на Microsoft IIS от 8.3% до 7%. Долята на LiteSpeed е нараснала от 6.3% до 8.4%, а на Node.js от 0.8% до 1.2%. В Русия nginx се използва на 79.1% от най-посещаваните сайтове (преди година — 78.9%).

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

  • Добавена е възможността за проверка на клиентски сертификати с участието на външни услуги на базата на протокола OCSP (Online Certificate Status Protocol). За активиране на проверката е предложена директивата ssl_ocsp, за настройка на размера на кеша — ssl_ocsp_cache, за пренаписване на URL на OCSP обработвача, указан в сертификата — ssl_ocsp_responder.
  • Включен модулът ngx_stream_set_module, който позволява задаване на стойност на променливата server { listen 12345; set $true 1; }
  • Добавена е директивата proxy_cookie_flags за указване на флагове за Cookie в проксирни връзки. Например, за добавяне на флага httponly към Cookie «one», а за всички останали Cookie флаговете nosecure и samesite=strict могат да се използват следните конструкции: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;

    Подобна директива userid_flags за добавяне на флагове към Cookie също е реализирана за модула ngx_http_userid.

  • Добавени са директивите «ssl_conf_command», «proxy_ssl_conf_command», «grpc_ssl_conf_command» и «uwsgi_ssl_conf_command», с помощта на които могат да се зададат произволни параметри за настройка на OpenSSL. Например, за приоритет на шифрите ChaCha и разширена настройка на шифрите TLSv1.3 може да се зададат ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • Добавена е директивата «ssl_reject_handshake», която предписва отказ на всички опити за осъществяване на договореност SSL-съединения (например, може да се използва за отхвърляне на всички запитвания с непознати имена на хостове в полето SNI). server { listen 443 ssl; ssl_reject_handshake on; } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • В пощенския прокси е добавена директивата proxy_smtp_auth, която позволява аутентифициране на потребителя на бэкенда чрез командата AUTH и механизма PLAIN SASL.
  • Добавена е директивата «keepalive_time», която ограничава общото време на живот на всяко keep-alive съединение, след което съединението ще бъде затворено (не бъркайте с keepalive_timeout, която определя времето на неактивност, след което keep-alive съединението се затваря).
  • Добавена е променлива $connection_time, чрез която можете да получите информация за продължителността на соединението в секунди с точност до милисекунди.
  • В директивите «proxy_cache_path», «fastcgi_cache_path», «scgi_cache_path» и «uwsgi_cache_path» е добавен параметър «min_free», който регулира размера на кеша на базата на определянето на минималния размер на свободното дисково пространство.
  • Директивите «lingering_close», «lingering_time» и «lingering_timeout» са адаптирани за работа с HTTP/2.
  • Кодът за обработка на съединения в HTTP/2 е приближен към реализацията на HTTP/1.x. Поддръжката на индивидуални настройки «http2_recv_timeout», «http2_idle_timeout» и «http2_max_requests» е прекратена в полза на общите директиви «keepalive_timeout» и «keepalive_requests». Настройките «http2_max_field_size» и «http2_max_header_size» са премахнати и вместо тях следва да се използва «large_client_header_buffers».
  • Добавена нова опция в командния ред «-e», която позволява да се посочи алтернативен файл за запис на логовете за грешки, който ще се използва вместо зададения в настройките. Вместо име на файл може да се зададе специалната стойност stderr.

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

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