Nginx

Nginx 1.8.0 новая стабильная ветка популярного http-сервера

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

В соответствии с апрельским отчетом компании Netcraft nginx используется на 14.24% (год назад 14.22%, два года назад 12.96%) всех активных сайтов, что соответствует второму месту по популярности в данной категории (доля Apache соответствует 50.91%, а Microsoft IIS — 10.95%). Доля nginx среди всех сайтов составляет 14.87% (год назад 15.25%), среди миллиона самых посещаемых сайтов в мире — 21.43% (год назад 17.82%). В настоящее время под управлением nginx работает около 126 млн сайтов (год назад 146 млн, два года назад — 96.1 млн). По данным W3Techs 23.8% из миллиона самых посещаемых сайтов в мире используют nginx, в апреле прошлого года этот показатель составлял 20.4%. В России nginx используется на 71.3% самых посещаемых сайтов (год назад — 68.6%).

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

  • Возможность выноса операций с файлами в отдельный пул потоков, что позволяет избавиться от блокирования рабочего процесса при выполнении операций чтения и отправки файлов. Число нитей в пуле потоков задаётся директивой thread_pool. Выборочная активация пула потоков для отдельных путей производится директивой «aio threads«. Для работы пула потоков nginx должен быть собран с опцией «—with-threads»;
  • Экспериментальный API для создания фильтров тела запроса;
  • Поддержка буферизации тела транзитных запросов, при включении которой тело запроса вначале полностью читается от клиента, а потом отправляется для дальнейшей обработки (без буферизации запрос начинает передаваться сразу). Для включения буферизации представлены директивыproxy_request_buffering, fastcgi_request_buffering, scgi_request_buffering и uwsgi_request_buffering;
  • Возможность проверки клиентских SSL-сертификатов в почтовом прокси и проверки в ngx_http_proxy_module проксированных серверных сертификатов, полученных от бэкендов;
  • Объявлен устаревшим параметр «sendfile» директивы «aio». Отныне nginx автоматически использует AIO для предварительной загрузки данных для sendfile, если указаны директивы «aio» и «sendfile»;
  • В блок конфигурации upstream добавлена поддержка директивы «hash«, предназначенной для организации балансировки нагрузки с привязкой клиента к серверу.
  • Возможность перенаправления в syslog логов, настраиваемых через директивы «error_log» и «access_log».
  • Добавлена директива ssl_password_file для определения файла с паролями от секретных ключей;
  • Новые директивы управления таймаутами и числом повторных попыток при обращении к upstream:
    • proxy_next_upstream_tries, proxy_next_upstream_timeout,
    • fastcgi_next_upstream_tries, fastcgi_next_upstream_timeout,
    • memcached_next_upstream_tries, memcached_next_upstream_timeout,
    • scgi_next_upstream_tries, scgi_next_upstream_timeout,
    • uwsgi_next_upstream_tries и uwsgi_next_upstream_timeout.
  • Новые директивы для принудительного включения byte ranges для прокэшированных и не кэшируемых ответов, назависимо от выставленных бэкендом заголовков: proxy_force_ranges, fastcgi_force_ranges, scgi_force_ranges и uwsgi_force_ranges.
  • Новые директивы для ограничения скорости чтения данных (лимит задаётся в байтах в секунду): proxy_limit_rate, fastcgi_limit_rate, scgi_limit_rate и uwsgi_limit_rate;
  • Новая директива autoindex_format, позволяющая выбрать формат (html, xml, json и jsonp) вывода списка элементов директории;
  • Новые директивы proxy_ssl_certificate, proxy_ssl_certificate_key, proxy_ssl_password_file, uwsgi_ssl_certificate, uwsgi_ssl_certificate_key и uwsgi_ssl_password_file;
  • В случае истечения таймаута proxy_cache_lock_timeout осуществляется отправка запроса к бэкенду без применения кэширования. Для управления временем принудительного снятия блокировки и повтора попыток кэширования добавлены директивы proxy_cache_lock_age, fastcgi_cache_lock_age, scgi_cache_lock_age и uwsgi_cache_lock_age;
  • Поддержка переменных «$upstream_cookie_{имя}» и «$ssl_client_fingerprint»;
  • Поддержка нового параметра always в директиве add_header;
  • Поддержка переменных в директивах expires, proxy_cache, fastcgi_cache, scgi_cache и uwsgi_cache;
  • Поддержка загрузки секретных ключей с аппаратных токенов при помощи движков OpenSSL;
  • Налажено использование директив proxy_pass, fastcgi_pass, scgi_pass и uwsgi_pass внутри блоков «if» и «limit_except»;
  • В директивы «proxy_cache_path», «fastcgi_cache_path», «scgi_cache_path» и «uwsgi_cache_path» добавлена поддержка параметра «use_temp_path», через который можно определить отдельную директорию для временных файлов;
  • Добавлена переменная $upstream_header_time, в которой сохраняется время получения заголовков от upstream-сервера;
  • В директивах limit_conn_zone и limit_req_zone можно использовать комбинации из нескольких переменных;
  • Для SPDY-соединений и SSL-соединений с бэкендами реализована возможность использования директивы tcp_nodelay;
  • При включенном кэширования бэкенду теперь передается содержимое HTTP-загловков «If-Modified-Since», «If-Range» и т.п, если заведомо известно, что ответ не будет прокэширован (например, при указании proxy_cache_min_uses);
  • В ситуации переполнения диска, nginx снижает интенсивность вывода ошибок в лог до одной записи в секунду;
  • Прекращена поддержка устаревшей директивы limit_zone;
  • Использование директивы log_format ограничено только уровнем HTTP.
  • Изменён метод экранирования символов в URI (используются шестнадцатеричные цифры в верхнем регистре;
  • Поддержка сборки с библиотеками BoringSSL и LibreSSL (форки OpenSSL от Google и OpenBSD);
  • Поддержка сборки с Си-библиотекой musl;
  • Реализован механизм дефрагментации свободных блоков разделяемой памяти.

Источник: http://www.opennet.ru/opennews/art.shtml?num=42082

Насколько полезным был этот пост?

Нажмите на звезду, чтобы оценить!

Средний рейтинг 0 / 5. Голосов: 0

Пока оценок нет! Будьте первым, поставь свою оценку этому посту.

Мы сожалеем, что этот пост не был полезен для вас!

Давайте улучшим этот пост!

Расскажите, как мы можем улучшить этот пост?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Back to top button