После 19 экспериментальных выпусков в тестовой ветке 1.1.x представлена новая стабильная версия высокопроизводительного HTTP-сервера nginx 1.2.0. В дальнейшем в рамках новой стабильной ветки API не будет меняться, все существенные изменения будут развиваться в рамках новой экспериментальной ветки 1.3.x.

В соответствии с апрельским отчетом компании Netcraft nginx используется на 12.76% всех активных сайтов и на 10.09% из миллиона самых посещаемых сайтов в мире. Год назад nginx использовался на 8.68% всех активных сайтов и 6.52% популярных сайтов. За год nginx перешагнул десятипроцентный рубеж и вытеснил IIS на третье место в рейтинге популярности активных сайтов. В настоящее время под управлением nginx работает около 23.4 млн хостов. По данным W3Techs 11% из миллиона самых посещаемых сайтов в мире используют nginx, в апреле прошлого года этот показатель составлял 6.8%. В России nginx используется на 58.2% самых посещаемых сайтов (год назад - 46.9%).

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

  • Модуль ngx_http_upstream_keepalive для включения keep-alive соединений с вышестоящими серверами;
  • Модуль ngx_http_limit_zone_module, позволяющий ограничить число соединений по определённому критерию, переименован в ngx_http_limit_conn_module

  • Директива proxy_redirect теперь поддерживает регулярные выражения и переменные в первом параметре.
  • Директива proxy_http_version, задаёт версию протокола HTTP для проксирования.
  • Директива fastcgi_keep_conn, позволяет организовать постоянные соединения с FastCGI-серверами.
  • Директива worker_aio_requests.
  • Директива limit_zone заменена директивой limit_conn_zone с новым синтаксисом.
  • Директива disable_symlinks, определяет, как следует поступать с символическими ссылками при открытии файлов.
  • Директивы [proxy/fastcgi/scgi/uwsgi]_cache_lock, [proxy/fastcgi/scgi/uwsgi_cache_lock]_timeout. В директивах [proxy/fastcgi/scgi/uwsgi]_cache_path добавлена поддержка параметров loader_files, loader_sleep и loader_threshold;
  • Директивы proxy_cookie_domain и proxy_cookie_path, задают текст, который нужно изменить в атрибутах domain и path полей “Set-Cookie” заголовка ответа проксируемого сервера
  • Директива pcre_jit, которая разрешает или запрещает использование JIT-компиляции (PCRE JIT) для регулярных выражений, известных на момент парсинга конфигурации.
  • Директивы xslt_param и xslt_string_param, которые задают параметры для XSLT-шаблонов;

  • Новая переменная $https, которая принимает значение "on" если соединение работает в режиме SSL.
  • Новая переменная $connection_requests.
  • Новые переменные $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd и $tcpinfo_rcv_space c информацией о клиентском TCP-соединении.

  • Поддержка указания нескольких DNS-серверов в директиве "resolver".
  • Добавлен параметр valid в директиве resolver. По умолчанию теперь используется TTL, возвращённый DNS-сервером;
  • Поддержка ограничения по нескольким limit_conn на одном уровне.
  • Добавлен параметр so_keepalive в директиве listen;
  • Добавлен параметр if_not_empty в директивах fastcgi/scgi/uwsgi_param;
  • Теперь можно указать несколько ограничений limit_req одновременно.
  • Добавлен параметр from в директиве disable_symlinks.
  • Директива worker_cpu_affinity теперь работает на FreeBSD.

  • Загрузчик кэша за каждую итерацию либо обрабатывает число файлов, указанное в параметре load_files, либо работает не дольше времени, указанного в параметре loader_threshold.
  • Изменение во внутреннем API: теперь при внутреннем редиректе в именованный location контексты модулей очищаются.
  • Если сервер, описанный в блоке upstream, был признан неработающим, то после истечения fail_timeout на него будет отправлен только один запрос; сервер будет считаться работающим, если успешно ответит на этот запрос.
  • После перенаправления запроса с помощью директивы error_page директива proxy_pass без URI теперь использует изменённый URI.
  • Ограничение на количество одновременных подзапросов поднято до 200.
  • Теперь keepalive соединения не запрещены для Safari по умолчанию.

Из добавленных в процессе разработки nginx 1.1.x новшеств, которые были перенесены в ветку 1.0.x можно выделить:

  • Модуль ngx_http_mp4_module для организации потокового вещания из файлов в формате H.264/AAC.
  • Директива image_filter_sharpen для повышения резкости итогового изображения.
  • Директива lingering_close, управляет закрытием соединений с клиентами.
  • Директивы uwsgi_buffering и scgi_buffering.
  • Директива max_ranges, ограничивает максимальное допустимое число диапазонов в запросах с указанием диапазона запрашиваемых байт (byte-range requests).
  • Уменьшение потребления памяти при использовании SSL.
  • SSI команда if поддерживает выделения в регулярных выражениях.
  • Параметры TLSv1.1 и TLSv1.2 в директиве ssl_protocols.
  • Директивы return и error_page теперь могут использоваться для возврата перенаправлений с кодом 307.
  • Двойные кавычки экранируются при выводе SSI-командой echo.
  • Cимволы 0x7F-0xFF в access_log записываются в виде \xXX.
  • Директивы "proxy/fastcgi/scgi/uwsgi_ignore_headers" теперь поддерживают значения X-Accel-Limit-Rate, X-Accel-Buffering и X-Accel-Charset.
  • На NetBSD поддерживаются accept фильтры.
  • Если суммарный размер всех диапазонов больше размера исходного ответа, то nginx возвращает только исходный ответ, не обрабатывая диапазоны.
  • Уменьшение времени работы загрузчика кэша.
  • Поддержка шифров с обменом ECDHE-ключами.
  • Уменьшение времени загрузки конфигураций с большим количеством HTTPS серверов.
  • Разделяемые зоны и кэши используют семафоры POSIX в Solaris.


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