The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Увидел свет HTTP-сервер nginx 1.10.0

26.04.2016 20:07

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

В соответствии с апрельским отчетом компании Netcraft nginx используется на 16.81% (год назад 14.24%, два года назад 14.22%) всех активных сайтов, что соответствует второму месту по популярности в данной категории (доля Apache соответствует 49.15%, а Microsoft IIS - 10.07%). Доля nginx среди всех сайтов составляет 13.23% (год назад 14.87%, два года назад 15.25%), среди миллиона самых посещаемых сайтов в мире - 25.64% (год назад 21.43%, два года назад 17.82%). В настоящее время под управлением nginx работает около 143 млн сайтов (год назад 126 млн). По данным W3Techs 29.8% из миллиона самых посещаемых сайтов в мире используют nginx, в апреле прошлого года этот показатель составлял 23.8%. В России nginx используется на 75.2% самых посещаемых сайтов (год назад - 71.3%).

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

  • Добавлена поддержка динамически загружаемых модулей. Модуль оформляется в виде разделяемой библиотеки и загружается при помощи директивы load_module (например, "load_module modules/ngx_mail_module.so"). Из поддерживающих динамическую загрузку модулей отмечаются:
    • GeoIP (ngx_http_geoip_module),
    • Image-Filter (ngx_http_image_filter_module),
    • Mail (ngx_mail_{core, auth, imap, pop3, proxy, smtp}_module),
    • Stream (ngx_stream_{core, access, limit_conn, proxy, ssl, upstream}_module)
    • XSLT (ngx_http_xslt_module).
    • Perl (ngx_http_perl_module).
  • Интегрирован модуль stream с реализацией системы балансировки произвольных TCP- и UDP-соединений, позволяющей организовать проброс и распределение по нескольким узлам такого трафика, как обращения к СУБД, системам аутентификации, каталогам LDAP, RTMP-серверам, VoIP-системам, DNS-, syslog- или radius-серверам. Среди поддерживаемых методов балансировки: round-robin (круговой перебор, при котором соединения равномерно распределяются среди обработчиков), least-connections (запрос перенаправляется к менее нагруженному серверу), least_time (перенаправление на сервер, демонстрирующий наиболее высокую отзывчивость) и hash (перенаправление на основе хэша от определённого пользователем параметра, например, IP). Подробнее о новом модуле можно прочитать в анонсе открытия его исходных текстов;
  • Интегрирован модуль ngx_http_v2_module с поддержкой протокола HTTP/2. Поддержка протокола SPDY (ngx_http_spdy_module), методы которого легли в основу HTTP/2, удалена из состава nginx. С особенностями HTTP/2 можно познакомиться в тексте анонса интеграции HTTP/2 в кодовую базу nginx.
  • В состав включен модуль ngx_http_slice_module с реализацией фильтра, разбивающего запрос на подзапросы, каждый из которых возвращает определённую часть ответа, что может быть использовано для увеличения эффективности кэширования больших ответов;
  • Добавлена директива aio_write, управляющая применением AIO при записи файлов;
  • Добавлена директива "proxy_cache_convert_head", управляющая трансляцией метода HEAD в GET при кэшировании;
  • Добавлена директива zone в блок upstream, которая определяет зону разделяемой памяти, совместно используемую процессами-обработчиками);


  • В директиву "listen" добавлен параметр "reuseport", при указании которого сокет открывается с опцией SO_REUSEPORT, позволяющей сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений. Указанная технология позволяет упростить распределение обработчиков соединения по разным процессам, избавившись от отдельного звена, распределяющего запросы по рабочим процессам;
  • В директиве "worker_cpu_affinity" реализована поддержка более 64 CPU и добавлен новый параметр "auto", при указании которого привязка процессов-обработчиков к доступным CPU производится автоматически;
  • Реализована возможность одновременного использования нескольких директив "sub_filter";
  • В директиве "sub_filter" обеспечена поддержка указания переменных в маске поиска замены.
  • Реализован параметр "nohostname" при настройке ведения логов через syslog;
  • В модуле ngx_http_realip_module реализована поддержка переменной $realip_remote_addr, содержащей оригинальный IP клиента;
  • Добавлена поддержка системного вызова pwritev();
  • Добавлена возможность использования директивы "include" в блоке "upstream";
  • Добавлена переменная $upstream_connect_time, в которую записывается время отклика upstream-сервера;
  • В fastcgi.conf, fastcgi_params, scgi_params и uwsgi_params добавлен параметр REQUEST_SCHEME.
  • Добавлена опция "-T" для проверки файла конфигурации с выводом дампа текущей конфигурации;
  • Прекращена поддержка устаревших методов обработки соединений aio и rtsig;
  • По умолчанию отключена поддержка протокола SSLv3.


  1. Главная ссылка к новости (http://mailman.nginx.org/piper...)
  2. OpenNews: Релиз http-сервера nginx 1.8.0
  3. OpenNews: Выпуск http-сервера nginx 1.9.0
  4. OpenNews: В кодовую базу nginx добавлен модуль для поддержки HTTP/2
  5. OpenNews: В HTTP-сервер nginx встроена поддержка JavaScript
  6. OpenNews: В nginx появилась поддержка балансировки UDP-соединений
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44316-nginx
Ключевые слова: nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 20:31, 26/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> По умолчанию отключена поддержка протокола SSLv3

    Это что-то невероятное

     
     
  • 2.2, мегааноним_ (?), 20:36, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Это что-то невероятное

    Что невероятного в отключение устаревшего и уязвимого протокола?

     
     
  • 3.4, кверти (ok), 21:13, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное в том, что на дворе 2016 год, а его только отключили, вместо того, чтобы выбросить
     
     
  • 4.8, Аноним999 (ok), 21:52, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +29 +/
    > Увидел свет HTTP-сервер

    Ура!!! Наконец-то появился сервер, который видит свет! ☺

     
     
  • 5.14, Анончег (?), 23:07, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Друг спрашивает может ли он в Asp или Net?
     
     
  • 6.16, Uranonimus (?), 01:47, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Главное - в Джаву точно может
     
  • 6.25, eRIC (ok), 07:06, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Друг спрашивает может ли он в Asp или Net?

    может в качестве CGI, где обработку ASP/.NET/Mono выполняется другой стороной

     
  • 6.33, Клыкастый (ok), 10:20, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Друг спрашивает может ли он в Asp или Net?

    друг пусть копит на IIS.

     
     
  • 7.39, count0krsk (ok), 11:41, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не говорите это слово, люди же кушают и читают, а Вы про гогно...
     
  • 7.43, Анончег (?), 21:57, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > друг пусть копит на IIS.

    Спасибо, передам.


     
  • 2.3, Аноним (-), 21:13, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В последней samba4 с патчами badlock SSLv3 и PlaintText совсем не работает без объяснять, так что это пустяки...
     

  • 1.5, Аноним (-), 21:30, 26/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь в курсе, testcookie в базовую поставку включить они не собираются? Или у них в NGINX Plus идет модулем?
     
  • 1.6, Аноним (-), 21:33, 26/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Возможно средствами nginx сделать при не доступности одной ноды, отправлять всех на вторую без лишних скриптов которые будут проверять доступность нод. Пробовал использовать балансер с методом балансировки hash, но время от времени подвисает у клиента из за того что одна из нод не доступна как будто продолжаются отправлять заспросы на не работающаю ноду.
     
     
  • 2.7, Онаним (?), 21:42, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А это точно надо здесь спрашивать, а не в форуме nginx?
     
  • 2.12, luserz (?), 22:44, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    upstream... backup
     
     
  • 3.28, Аноним (-), 09:27, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это тоже было использовано, но результат такой же. Похоже что без отдельной проверки на доступность ноды, полноценно перенаправлять не получится. Не помню с попытками и интервалами играл или нет, по умолчанию там вполне себе нормальные значения чтобы так не тупить.
     
     
  • 4.36, RomanCh (ok), 11:13, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Так healthcheck же для апстрима. Однако он поддерживался добровольцами до 0.7.* какой-то версии, потом ещё можно было врукопашную вкостыливать немного переписав код модуля, и где-то до версии 1.2.* у меня это получалось. Потом что-то сильно поменялось, а нужда отпала и я больше не дофичивал.
    Как выяснилось чуть позже - его перестали поддерживать, видимо что бы включить в коммерческую версию: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#health_check
    Ничего личного, только бизнес :)
     
     
  • 5.40, IvAnZ (?), 12:04, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Потестируйте кто-нибудь это
    https://caddyserver.com/docs/proxy

    Вроде синтаксис похож на nginx, но там из коробки healthcheck.

     
     
  • 6.41, RomanCh (ok), 12:06, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да мне уже не надо, но всё равно вдруг кому пригодится. Хотя ща закричат что "на Go, не надо!" :)
     
  • 2.15, Sw00p aka Jerom (?), 23:16, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    увеличьте интервал повторного опроса фейл апстрима, и сократите число попыток
     
  • 2.34, slezhuk (?), 10:28, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Неплюсовый будет постояно подвисать на дохлой ноде, потому что не умеет активные проверки, только пассивные.
     
  • 2.44, Аноним (-), 23:53, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, юзай haproxy.
     

  • 1.9, Serge R (?), 21:55, 26/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    пока читал, подумал "ну наконец то!" более пяти раз
     
  • 1.10, Аноним (-), 22:02, 26/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    На rust можно писать модули к этому костылю?
     
     
  • 2.13, Аноним (-), 22:53, 26/04/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это далеко не костыль)
     
  • 2.18, Аноним (-), 02:03, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    К счастью нет, но забить такому восторженному студенту, как ты, осиновый кол можно, чтобы со своим бредом не лезли из всех щелей.
     

  • 1.19, Анонин (?), 02:41, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А готовый модуль для Kerberos аутентификации имеется?
     
     
  • 2.45, Аноним (-), 22:06, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    напиши динамический, благо уже вторую версию как можно
     

  • 1.21, Аноним (-), 05:08, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен, что ему не с апачем тягаться, а с systemd в самый раз(
     
     
  • 2.24, Какаянахренразница (ok), 05:18, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен,
    > что ему не с апачем тягаться, а с systemd в самый
    > раз(

    Их надо стравить. Посмотрели бы, кто кого съест: система инициализации с вебсервером внутри или наоборот.

     
  • 2.29, Andrey Mitrofanov (?), 09:50, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен,
    > что ему не с апачем тягаться, а с systemd в самый
    > раз(

    Дети! Сегодня мы будем играть в Угадайку!! А угадайте, кто с кем соревнуется, кто кого обгоняет и назовите имена участникао по... числу строк кода на Си в проектах:

    [CODE]|    | Lang. | Code    | Comment | Comm.% | Blank  | Total   | Lang. % |
    | #1 | C     | 107,704 | 22,942  |  17.6% | 22,910 | 153,556 |   64.1% |
    | #2 | C     | 122,257 | 5,332   |   4.2% | 44,335 | 171,924 |   71.8% |
    | #3 | C     | 270,920 | 31,560  |  10.4% | 84,998 | 387,478 |   82.8% |
    | #4 | C     | 330,154 | 84,492  |  20.4% | 65,991 | 480,637 |   22.4% |[/CODE]

    ...По материалам Open Hub (б.Ohloh), любезно предоставленным редакции ф.Black Duck.
    ---http://techrights.org/wiki/index.php/Black_Duck

     
     
  • 3.30, Andrey Mitrofanov (?), 09:57, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Дети! Сегодня мы будем играть в Угадайку!! А угадайте, кто с кем
    > соревнуется, кто кого обгоняет и назовите имена участникао по... числу строк
    > кода на Си в проектах:

    Подсказка: Апач не в числе угадываемых --

    [CODE]| #5 | C     | 511,630 | 150,702 |  22.8% | 94,358 | 756,690 |   32.5% |[/CODE]

    > ...По материалам Open Hub (б.Ohloh), любезно предоставленным редакции ф.Black Duck.
    > ---http://techrights.org/wiki/index.php/Black_Duck

     
  • 3.47, Andrey Mitrofanov (?), 09:13, 30/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    То ли дети боятся тролячего пеннета, то ли клован-аниматор из меня плохой, конку... большой текст свёрнут, показать
     
  • 2.37, Ivan_83 (ok), 11:40, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    От Сысоева там само ядро да десяток модулей, остальная куча модулей от сторонних разработчиков/компаний.
    ИМХО само ядро там не сильно то разрослось/изменилось.
     
     
  • 3.46, Andrey Mitrofanov (?), 22:10, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > От Сысоева там само ядро да десяток модулей
    > ИМХО само ядро там не сильно то разрослось/изменилось.

    Не, ну, я смотрю, _почту_ они вынесли/отделили в модуль. Это, надо полагать, _уменьшило_ "ядро" (~минимальную необходимую часть).  Хотя, с другой стороны, механизмы/API динамической загрузки модулей его, ядро, таки чуть раздули.

     

  • 1.22, Какаянахренразница (ok), 05:11, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Зачастили как-то релизы nginx-а...
     
     
  • 2.26, eRIC (ok), 07:07, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Зачастили как-то релизы nginx-а...

    однако :)

     
  • 2.32, Andrey Mitrofanov (?), 10:05, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Зачастили как-то релизы nginx-а...

    Вы. Не. Понимате.
    http://www.opennet.me/openforum/vsluhforumID3/107442.html#10
    Регулярно. Перед пляжно-конференционно-инвесторским сезоном.

     
     
  • 3.35, Какаянахренразница (ok), 10:57, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О, так это же тот самый, многообещанный и долгожданный, стабильный релиз! Не признал.
     
     
  • 4.38, Andrey Mitrofanov (?), 11:40, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > О, так это же тот самый, многообещанный и долгожданный, стабильный релиз! Не
    > признал.

    Да! Ноги пообрывать тому, кто про Свет в теме написал, а про "стабильный релиз" вынес в первую строку текста.  Анафема.  ><//>Я тож, промахнулся в прошлый раз с 2-3 неделями.

     

  • 1.42, Аноним (-), 17:16, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При простом обновлении с 1.8 на 1.10 и смене spdy на http2 ( или как там его ) в конфигах с
         ssl_prefer_server_cipher on;
    перестаёт работать https кто обновляется рекомендуется внимательно прочитать доки ( http://nginx.org/ru/docs/http/ngx_http_v2_module.html#example ):
    "
    Чтобы принимать HTTP/2-соединения по TLS необходимо наличие поддержки расширения “Application-Layer Protocol Negotiation” (ALPN) протокола TLS, появившейся лишь в OpenSSL версии 1.0.2. Работа расширения “Next Protocol Negotiation” (NPN) протокола TLS (поддерживаемого начиная с OpenSSL версии 1.0.1) в данном случае не гарантируется.

    Если директива ssl_prefer_server_ciphers установлена в значение “on”, шифры должны быть настроены таким образом, чтобы соответствовать чёрному списку RFC 7540, Appendix A, а также поддерживаться клиентами.
    "

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру