Релиз nginx 1.16.0

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

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

  • Добавлена возможность использования переменных в директивах ‘ssl_certificate‘ и ‘ssl_certificate_key‘, что можно использовать для динамической загрузки сертификатов;
  • Добавлена возможность загрузки SSL-сертификатов и секретных ключей из переменных без использования промежуточных файлов;
  • В блоке «upstream» реализована новая директива «random«, при помощи которой можно организовать балансировку нагрузки со случайным выбором сервера для проброса соединения;
  • В модуле ngx_stream_ssl_preread реализована переменная $ssl_preread_protocol,
    которая определяет наибольшую версию протокола SSL/TLS, которую поддерживает клиент. Переменная позволяет создавать конфигурации для доступа с использованием различных протоколов с SSL и без SSL через один сетевой порт при проксировании трафика с использованием модулей http и stream. Например, для организации доступа по SSH и HTTPS через один порт 443 порт по умолчанию можно пробрасывать на SSH, но если определена версия SSL пробрасывать на HTTPS.

  • В модуль upstream добавлена новая переменная «$upstream_bytes_sent«, которая отображает число байт, переданных на сервер группы;
  • В модуль stream в рамках одного сеанса добавлена возможность обработки нескольких входящих UDP-датаграмм от клиента;
  • В модуль stream добавлена директива «proxy_requests«, задающее число датаграмм, полученных от клиента, по достижении которого удаляется привязка между клиентом и существующей UDP-сессией. После получения указанного количества датаграмм следующая датаграмма, полученная от того же клиента, начинает новую сессию;
  • В директиве listen появилась возможность указания диапазонов портов;
  • Добавлена директива «ssl_early_data» для включения режима 0-RTT при использовании TLSv1.3, который позволяет сохранить ранее согласованные параметры TLS-соединения и снизить до 2 число RTT при возобновлении ранее установленного соединения;
  • Для настройки keepalive для исходящих соединений (включения или выключения опции SO_KEEPALIVE для сокетов) добавлены новые директивы:

    • «proxy_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к проксируемому серверу;
    • «fastcgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к FastCGI-серверу;
    • «grpc_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к gRPC-серверу;
    • «memcached_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к серверу memcached;
    • «scgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к SCGI-серверу;
    • «uwsgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к uwsgi-серверу.
  • В директиву «limit_req» добавлен новый параметр «delay», задающий лимит, по достижении которого избыточные запросы задерживаются;
  • В блок «upstream» добавлены новые директивы «keepalive_timeout» и «keepalive_requests» для задания лимитов для Keepalive;
  • Объявлена устаревшей директива «ssl», на смену которой пришёл параметр «ssl» в директиве «listen». Определение отсутствующих SSL-сертификатов теперь производится на этапе тестирования конфигурации при использовании в настройках директивы «listen» с параметром «ssl»;
  • При использовании директивы reset_timedout_connection при истечении таймаута соединения теперь закрываются с применением кода 444;
  • SSL-ошибки «http request», «https proxy request», «unsupported protocol» и «version too low» теперь отображаются в логе с уровнем «info» вместо «crit»;
  • Добавлена поддержка метода poll на системах Windows при использовании Windows Vista и новее;
  • Обеспечена возможность использования TLSv1.3 при сборке с библиотекой BoringSSL, а не только с OpenSSL.

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

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