Релиз nginx 1.20.0

Материал из Викиновостей, свободного источника новостей

20 апреля 2021 года

После года разработки представлена новая стабильная ветка высокопроизводительного 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%, два года назад 226.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 в проксируемых соединениях. Например, для добавления к Cookie «one» флага «httponly», а для всех остальных Cookie флагов «nosecure» и «samesite=strict» можно использовать конструкцию:

proxy_cookie_flags one httponly;
proxy_cookie_flags ~ nosecure samesite=strict;

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

"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.
  • При исчерпании рабочим процессом свободных соединений, nginx теперь закрывает не только keepalive-соединения, но и соединения в состоянии

ожидания закрытия сокета («lingering close»).

  • Код обработки соединений в HTTP/2 приближен к реализации HTTP/1.x. Поддержка отдельных настроек «http2_recv_timeout», «http2_idle_timeout» и «http2_max_requests» прекращена в пользу общих директив «keepalive_timeout» и «keepalive_requests».
  • Добавлена новая опция командной строки «-e», позволяющая указать альтернативный файл для записи лога ошибок, который будет использоваться вместо лога, заданного в настройках. Вместо имени файла можно указать специальное значение stderr.
  • Удалены настройки «http2_max_field_size» и «http2_max_header_size», вместо которых следует использовать «large_client_header_buffers».

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Релиз nginx 1.20.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.