Дата публикации:Tue, 14 Apr 2026 21:15:08 +0300
После года разработки опубликована новая стабильная ветка высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера nginx 1.30.0, которая вобрала в себя изменения, накопленные в основной ветке 1.29.x. В дальнейшем все изменения в стабильной ветке 1.30 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.31, в которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus. Код nginx написан на языке Си и распространяется под лицензией BSD.
В соответствии с февральским отчётом компании Netcraft под управлением nginx работает около 321 млн сайтов (год назад 245 млн, два года назад - 243 млн, три года назад 289 млн). Nginx используется на 16.08% всех активных сайтов (год назад 17.89%, два года назад 18.15%, три года назад 18.94%), что соответствует второму месту по популярности в данной категории (доля Apache соответствует 13.27% (год назад 16.03%, два года назад 20.09%, три года назад 20.52%), Cloudflare - 20.62% (17.81%, 14.12%, 11.32%), Google - 10.65% (9.89%, 10.41%, 9.89%).
При рассмотрении всех сайтов nginx сохраняет лидерство и занимает 22.65% рынка (год назад 20.48%, два года назад - 22.31%, три года назад - 25.94%), в то время как доля Apache соответствует 12.19% (16.03%, 20.17%, 20.58%), Cloudflare - 15.27% (12.87%, 11.24%, 10.17%), OpenResty (платформа на базе nginx и LuaJIT) - 8.01% (9.36%, 7.93%, 7.94%).
Среди миллиона самых посещаемых сайтов в мире nginx занимает второе место с долей 19.85% (год назад 20.37%, два года назад 20.63%, три года назад 21.37%). Первое место удерживает Cloudflare - 26.84% (22.32%, 22.59%, 21.62%). Доля Apache httpd - 15.84% (17.95%, 20.09%, 21.18%). По данным W3Techs nginx используется на 32.8% сайтов из миллиона самых посещаемых (в апреле прошлого года этот показатель составлял 33.8%, позапрошлого - 34.3%). Доля Apache за год снизилась с 26.3% до 23.9%, доля Microsoft IIS снизилась с 4% до 3.4%, а доля Caddy с 0.3% до 0.2%. Доля Node.js увеличилась с 4.4% до 6.0%, а доля LiteSpeed с 14.6% до 15.2%.
Наиболее заметные улучшения, добавленные в процессе формирования основной ветки 1.29.x:
- Добавлена поддержка TLS-расширения ECH (Encrypted ClientHello), продолжающего развитие расширения ESNI (Encrypted Server Name Indication) и используемого для шифрования информации о параметрах TLS-сеансов, таких как запрошенное доменное имя. Ключевое отличие ECH от ESNI в том, что в ECH вместо шифрования на уровне отдельных полей целиком шифруется всё TLS-сообщение ClientHello, что позволяет блокировать утечки через поля, которые не охватывает ESNI, например, поле PSK (Pre-Shared Key). Использование ECH включается через указание в директиве "ssl_ech_file" файла конфигурации ECHConfig в формате PEM. Поддержка доступна при использовании сборок OpenSSL с ECH. Добавлена поддержка протокола Multipath TCP (MPTCP), позволяющего доставлять пакеты одновременно по нескольким маршрутам через разные сетевые интерфейсы. Для включения в директиву "listen" добавлен параметр "multipath". Добавлена возможность привязки сеансов клиентов к одним и тем же серверам в группе. Доступно три метода: "cookie" - передача данных о выбранном сервере через указанную Cookie; "route" - проксируемый сервер назначает клиенту маршрут при получении первого запроса; "learn" - nginx анализирует ответы от upstream-сервера и запоминает начатые сервером сеансы. Для настройки привязки в блок "upstream" модуля "http" добавлена директива "sticky", а в директиву "server" добавлены параметры "route" и "drain". Добавлена директива "early_hints" и реализована поддержка HTTP-кода 103 в ответах от бэкендов proxy и gRPC. Код 103 позволяет информировать клиента о содержании некоторых HTTP-заголовков сразу после запроса, не дожидаясь пока сервер выполнит все связанные с запросом операции и начнёт отдачу контента. Подобным образом можно сообщать подсказки о связанных с отдаваемой страницей элементах, которые могут быть предварительно загружены (например, могут быть приведены ссылки на используемые на странице css и javascript). Получив информацию о подобных ресурсах браузер приступит к их загрузке не дожидаясь окончания отдачи основной страницы, что позволяет сократить общее время обработки запроса. Добавлены директивы add_header_inherit и add_trailer_inherit, позволяющие изменить правила наследования значений, указанных в директивах add_header и add_trailer. Параметр "off" отменяет наследование значений, а параметр "merge" включает добавление значений с предыдущего уровня к значениям на текущем уровне. Добавлена директива "ssl_certificate_compression" для управления сжатием TLS-сертификатов. Добавлена директива max_headers, ограничивающая максимальное число HTTP-заголовков в запросе. При превышении лимита возвращается ошибка 400 (Bad Request). Возможность перенесена из FreeNginx. Добавлены переменные $request_port и $is_request_port. Первая переменная содержит номер порта из компонента URI или из заголовка "Host", а вторая содержит ":", если переменная $request_port не пустая. Добавлены переменные $ssl_sigalg и $ssl_client_sigalg, содержащие название алгоритма формирования цифровой подписи для TLS-соединения. В директиву "geo" добавлен параметр "volatile", отключающий кэширование переменной. Разрешено использовать маски в директиве "include", указанной внутри блока "geo". В блоке "upstream" активирована по умолчанию директива "keepalive". В директиву "keepalive", используемую в блоке "upstream", добавлен параметр "local". При указании данного параметра, вместо совместного использования одного соединения к общему upstream-серверу, упоминаемому в разных блоках location и server, для каждого блока поддерживается отдельное соединение к upstream. При использовании в режиме прокси по умолчанию выставлена версия протокола HTTP/1.1 с включением режима keep-alive (в модуле ngx_http_proxy_module включена по умолчанию поддержка keep-alive и выставлено значение "1.1" в директиве "proxy_http_version" и прекращена отправка по умолчанию заголовка "Connection"). В модуль ngx_http_proxy добавлена поддержка протокола HTTP/2, что позволяет использовать HTTP/2 при обращении к бэкендам. Предоставлена возможность загрузки криптографических ключей из аппаратных токенов, используя в качестве провайдера библиотеку OpenSSL. В реализацию протокола QUIC добавлена поддержка режима 0-RTT, доступная на системах с OpenSSL 3.5.1 и более новыми выпусками. Добавлена возможность сборки с криптографической библиотекой AWS-LC, развиваемой компанией Amazon. По умолчанию отключено сжатие сертификатов TLSv1.3. Обеспечена совместимость с библиотекой OpenSSL 4.0.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65207
