21 апреля 2020 года

После года разработки представлена новая стабильная ветка высокопроизводительного 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), если он доступен, чтобы избежать чтения из быстрого соединения в течение долгого времени.

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

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

Комментарии

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