В соответствии с мартовским отчетом компании 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 процесса, отправившего сигнал.
Источник: https://www.opennet.ru/opennews/art.shtml?num=48454
(opennet.ru, основная лента)