Релиз http-сервера nginx 1.2.0
После 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.
© OpenNet