17 апреля 2018 года

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

В соответствии с мартовским отчетом компании Netcraft nginx используется на 23.76% (год назад 19.55%, два года назад 16.81%) всех активных сайтов, что соответствует второму месту по популярности в данной категории (доля Apache соответствует 43.03%, Google - 7.71%, а Microsoft IIS - 6.75%). Доля nginx среди всех сайтов составляет 23.11% (год назад 19.91%, два года назад 13.23%), среди миллиона самых посещаемых сайтов в мире - 23.76% (год назад 25.64%, два года назад 21.43%). В настоящее время под управлением nginx работает около 409 млн сайтов (год назад 350 млн).

По данным W3Techs 38.0% из миллиона самых посещаемых сайтов в мире используют nginx, в апреле прошлого года этот показатель составлял 33.3%, позапрошлого - 29.8%. Доля Apache за год снизилась с 50% до 46.7%, а доля Microsoft IIS с 11.3% до 9.9%. В России nginx используется на 78.9% самых посещаемых сайтов (год назад - 76.9%).

Из ключевых улучшений nginx 1.14.0 отмечается модуль mirror, поддержка протокола TLSv1.3, поддержка HTTP/2 push и модуль с реализацией gRPC-прокси. Наиболее заметные улучшения, добавленные в процессе формирования основной ветки 1.13.x:

  • Реализован механизм Server Push для протокола HTTP/2, который предоставляет возможность отправки ресурсов от сервера к клиенту, не дожидаясь их явного запроса (например, подобным образом можно передавать файлы CSS, скрипты и изображения, которые необходимы для отрисовки страницы).Для отправки push-запросов используется уже установленное клиентом сое динение. Т.е. клиент подключается и запрашивает определённую страницу, после этого сервер на основании своих настроек или содержимого переданного клиентом заголовка Link сам инициирует передачу определённых ресурсов через уже установленное соединение HTTP/2, не дожидаясь запроса этих ресурсов от клиента;
  • Добавлена поддержка протокола TLSv1.3. Для включения в директиве «ssl_protocols» следует указать параметр «TLSv1.3». Протокол поддерживается только в предстоящей версии OpenSSL 1.1.1;
  • Для соединений с бэкендами разрешено повторное согласование SSL-соединения;
  • Новые модули:
  • ngx_http_grpc_module с реализацией прокси для протокола gRPC, позволяющего организовать работу микросервисов на различных языках программирования, которые взаимодействуют между собой при помощи универсального API. Сетевое взаимодействие в gRPC реализовано поверх протокола HTTP/2 и базируется на применении Protocol Buffers для сериализации данных. Модуль даёт возможность управлять потоками gRPC, выделяя отдельные сервисы и методы. Например, появляется возможность маршрутизировать gRPC по разным бэкендам, в зависимости от запрошенной операции, блокировать или ограничивать интенсивность определённых вызовов, инспектировать трафик gRPC или организовывать балансировку нагрузки;
  • ngx_http_mirror_module, позволяющий зеркалировать поступающие запросы на другие серверы. Клиенту возвращается результат обработки запроса от основного обработчика, а результаты, возвращённые зеркалируемыми бэкендами, игнорируются. При помощи зеркалирования можно достаточно просто организовать работу синхронно обновляемого резервного сервера для таких сайтов, как web-форумы;
  • Изменения в директивах:
  • Через параметр proxy_protocol в директиве listen теперь можно включить вторую версию протокола PROXY;
  • В реализацию SSI-директивы «include» добавлена возможность использования параметра «set» для сохранения в переменную содержимого произвольных ответов. Максимальный размер ответа ограничивается значением директивы

"subrequest_output_buffer_size»;

  • В директиву «log_format» добавлен параметр «escape=none» для отключения экранирования символов при записи в лог;
  • В директиву set_real_ip_from в качестве параметра добавлена возможность указывать имя хоста;
  • Добавлена поддержка использования директив return и error_page для возврата перенаправлений для запросов с HTTP кодом 308;
  • Изменения в модулях:
  • В модуле ngx_stream_ssl_preread_module реализована переменная $ssl_preread_alpn_protocols;
  • В модуле ngx_http_headers реализована директива «add_trailer», через которую можно определить дополнительное поле, которое будет добавлено в конец ответа, если код ответа равен 200, 201, 206, 301, 302, 303, 307 или 308;
  • В модулях mail_proxy и stream в директиве «listen» появились поддержка параметров «rcvbuf» и «sndbuf», позволяющих настроить размер буфера приёма (параметр SO_RCVBUF) и передачи (параметр SO_SNDBUF);
  • Разное:
  • Представлена переменная $ssl_client_escaped_cert, в которой сохраняется SSL-сертификат в экранированном однострочном представлении URL-encoded, что позволяет сразу использовать данный сертификат в параметрах HTTP-запросов и в заголовках;
  • Улучшено определение размера кэша процессора;
  • Внесены исправления в обработку дат до 1970 года и после 10000 года;
  • Улучшена поддержка платформы Windows: налажена работа чистки кэша в соответствии с лимитом, заданным через параметр «max_size», решены проблемы с выделением разделяемой памяти, обеспечена работа директивы «ssl_session_ticket_key» и параметра «include» директивы «geo»;
  • При отражении в логе сигналов в лог теперь записывается и PID процесса, отправившего сигнал.

Источники

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

Комментарии

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