После года разработки представлена (http://nginx.org/?1.16) новая стабильная ветка высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера nginx 1.16.0 (http://nginx.org/), которая вобрала в себя изменения, накопленные в рамках основной ветки 1.15.x. В дальнейшем все изменения в стабильной ветке 1.16 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.17, в рамках которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется (http://nginx.com/blog/nginx-1-6-1-7-released) использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus. Наиболее заметные улучшения, добавленные в процессе формирования основной ветки 1.15.x:
- Добавлена возможность использования переменных в директивах 'ssl_certificate (https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_...)' и 'ssl_certificate_key (https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_...)', что можно использовать для динамической загрузки сертификатов;
- Добавлена возможность загрузки SSL-сертификатов и секретных ключей из переменных без использования промежуточных файлов;
- В блоке "upstream" реализована новая директива "random (http://nginx.org/en/docs/http/ngx_http_upstream_module.html#...)", при помощи которой можно организовать балансировку нагрузки со случайным выбором сервера для проброса соединения;
- В модуль upstream добавлена новая переменная "$upstream_bytes_sent (http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#...)", которая отображает число байт, переданных на сервер группы;
- В модуль stream добавлена возможность обработки в рамках одного сеанса нескольких входящих UDP-датаграмм от клиента;
- В модуле ngx_stream_ssl_preread реализована переменная $ssl_preread_protocol (http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_modul...),
которая определяет наибольшую версию протокола SSL/TLS, которую поддерживает клиент. Переменная позволяет создавать конфигурации (https://www.nginx.com/blog/running-non-ssl-protocols-over-ss.../) для доступа с использованием различных протоколов с SSL и без SSL через один сетевой порт при проксировании трафика с использованием модулей http и stream. Например, для организации доступа по SSH и HTTPS через один порт 443 порт по умолчанию можно пробрасывать на SSH, но если определена версия SSL пробрасывать на HTTPS.
- В модуль stream добавлена директива "proxy_requests (http://nginx.org/ru/docs/stream/ngx_stream_proxy_module.html...)", задающее число датаграмм, полученных от клиента, по достижении которого удаляется привязка между клиентом и существующей UDP-сессией. После получения указанного количества датаграмм следующая датаграмма, полученная от того же клиента, начинает новую сессию;
- В директиве listen появилась возможность указания диапазонов портов;
- Добавлена директива "ssl_early_data (http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_e...)" для включения режима 0-RTT (https://tools.ietf.org/html/rfc8446#section-2.3) при использовании TLSv1.3, который позволяет сохранить ранее согласованные параметры TLS-соединения и снизить до 2 число RTT при возобновлении ранее установленного соединения;
- Для настройки keepalive для исходящих соединений (включения или выключения опции SO_KEEPALIVE для сокетов) добавлены новые директивы:
- "proxy_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#pr...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к проксируемому серверу;
- "fastcgi_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к FastCGI-серверу;
- "grpc_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_grpc_module.html#grp...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к gRPC-серверу;
- "memcached_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_memcached_module.htm...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к серверу memcached;
- "scgi_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_scgi_module.html#scg...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к SCGI-серверу;
- "uwsgi_socket_keepalive (https://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uw...)" - конфигурирует поведение "TCP keepalive" для исходящих соединений к uwsgi-серверу.
- Добавлен новый параметр "delay" в директиве limit_req" (http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html), задающий лимит, по достижении которого избыточные запросы задерживаются;
- В блок 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 (https://www.opennet.me/opennews/art.shtml?num=49126) при сборке с библиотекой BoringSSL;
URL: http://mailman.nginx.org/pipermail/nginx-announce/2019/00023...
Новость: https://www.opennet.me/opennews/art.shtml?num=50561