Релиз nginx 1.18.0

После года разработки представлена новая стабильная ветка высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера nginx 1.18.0, которая вобрала в себя изменения, накопленные в рамках основной ветки 1.17.x. В дальнейшем все изменения в стабильной ветке 1.18 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.19, в рамках которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus.

В соответствии с апрельским отчетом компании Netcraft nginx используется на 19.56% всех активных сайтов (год назад 20.73%, два года назад 21.02%), что соответствует второму месту по популярности в данной категории (доля Apache соответствует 27.64%, Google — 10.03%, Microsoft IIS — 4.77%). При этом при рассмотрении всех сайтов nginx сохраняет лидерство и занимает 36.91% рынка (год назад 27.52%), в то время как доля Apache соответствует 24.73%, Microsoft IIS — 12.85%, Google — 3.42%.

Среди миллиона самых посещаемых сайтов в мире доля nginx составляет 25.54% (год назад 26.22%, два года назад 23.76%). В настоящее время под управлением nginx работает около 459 млн сайтов (год назад 397 млн). По данным W3Techs nginx используется на 31.9% сайтах из миллиона самых посещаемых, в апреле прошлого года этот показатель составлял 41.8%, позапрошлого — 38% (спад объясняется переходом к отдельному учёту http-сервера Cloudflare). Доля Apache за год снизилась с 43.6% до 38.9%, а доля Microsoft IIS с 8.6% до 8.3%. В России nginx используется на 78.9% самых посещаемых сайтов (год назад — 81%).

Наиболее заметные улучшения, добавленные в процессе формирования основной ветки 1.17.x:

  • Добавлена директива limit_req_dry_run, которая активирует режим пробного запуска, в котором не применяются ограничения на интенсивность обработки запросов (без rate limit), но продолжается учёт выходящего за лимиты числа запросов в разделяемой памяти;
  • Добавлена директива limit_conn_dry_run, переводящая модуль ngx_http_limit_conn_module в режим пробного запуска, при котором число соединений не ограничивается, но учитывается;
  • Добавлена директива «auth_delay«, позволяющая добавить задержку неавторизованных запросов с кодом ответа 401 для сокращения интенсивности подбора паролей и защиты от атак, манипулирующих измерением времени выполнения операций (timing attack) при обращении к системам, доступ к которым ограничен паролем, результатом подзапроса или JWT (JSON Web Token);
  • Добавлена поддержка переменных в директивах «limit_rate» и «limit_rate_after», а также в директивах «proxy_upload_rate» и «proxy_download_rate» модуля stream;
  • В директиве grpc_pass добавлена поддержка использования переменной в параметре, определяющем адрес. Если адрес указан в виде доменного имени, имя ищется среди описанных групп серверов, и, если не найдено, то определяется с помощью resolver’а;
  • Добавлены новые переменные $proxy_protocol_server_addr и $proxy_protocol_server_port, которые содержат адрес и порт сервера, полученные из заголовка протокола PROXY;
  • В модуле ngx_stream_limit_conn_module добавлена переменная $limit_conn_status, которая хранит результат ограничения числа соединений: PASSED, REJECTED или REJECTED_DRY_RUN;
  • В модуле ngx_http_limit_req_module добавлена переменная $limit_req_status, которая хранит результат ограничения скорости поступления запросов: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN или REJECTED_DRY_RUN;
  • По умолчанию обеспечена сборка модуля ngx_http_postpone_filter_module;
  • Добавлена поддержка переключения именованных блоков «location» при помощи метода $r->internal_redirect(), предоставляемого встроенным интерпретатором Perl. Данный метод теперь подразумевает обработку URI с экранированными символами;
  • При использовании в блоке настроек «upstream» директивы «hash» для организации балансировки нагрузки с привязкой клиента к серверу, в случае указания пустого значения ключа теперь активируется режим равномерной балансировки (round-robin);
  • Добавлена поддержка вызова ioctl(FIONREAD), если он доступен, чтобы избежать чтения из быстрого соединения в течение долгого времени.

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

Добавить комментарий