Релиз stable-версии nginx 1.22.0

bf91d99788fcc72a02da59553b47b4b3
Вчера была представлена новая stable-версия популярного HTTP- и многопротокольного прокси-сервера nginx 1.22.0. В новую стабильную версию вошли все основные изменения, которые мы наблюдали по мере выхода ветки 1.21.х, а работа в ветке 1.22 будет вестись над устранением возможных ошибок и уязвимостей.

Развитие сервера продолжится в ветке 1.23, которая будет сформирована в ближайшее время. Для рядовых пользователей и разработчиков, которые не планируют активно использовать сторонние модули, требующие обеспечения совместимости, создатели nginx рекомендую использовать теперь именно 1.22.0 версию сервера. В течении трех месяцев на базе новой stable-версии также будет сформирован коммерческий пакет Nginx Plus.

Далее — список основных изменений, которые вошли в версию 1.22.0 по сравнению с веткой 1.21.х:

  • В директивах «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».

Nginx уверенно держит позицию одного из самых популярных веб-серверов мира. В апрельском отчете netcraft говорится, что сервер используется на 20.08% всех активных сайтах интернета (два года назад эта цифра была на 0.5% меньше и составляла 19.56%). Популярнее nginx только Apache, с долей мирового рынка в 22.58%. Среди миллиона самых посещаемых сайтов в мире доля nginx составляет 21.79%, а всего под его управлением сейчас работает около 361 млн сайтов.

© Habrahabr.ru