После года разработки представлена (http://nginx.org/?1.10) новая стабильная ветка высокопроизводительного HTTP-сервера nginx 1.10.0 (http://nginx.org/), которая вобрала в себя изменения, накопленные в рамках основной ветки 1.9.x. В дальнейшем все изменения в стабильной ветке 1.10 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.11, в рамках которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется (http://nginx.com/blog/nginx-1-6-1-7-released) использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus.
В соответствии с апрельским отчетом (http://news.netcraft.com/archives/2016/04/21/april-2016-web-...) компании 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 млн). По данным (http://w3techs.com/technologies/overview/web_server/all) W3Techs 29.8% из миллиона самых посещаемых сайтов в мире используют nginx, в апреле прошлого года этот показатель составлял 23.8%. В России nginx используется (http://w3techs.com/technologies/breakdown/ws-nginx/top_level...) на 75.2% самых посещаемых сайтов (год назад - 71.3%).Из улучшений (http://nginx.org/ru/CHANGES.ru-1.10), добавленных в процессе формирования основной ветки 1.9.x, можно отметить:
- Добавлена поддержка динамически загружаемых модулей (http://nginx.org/en/docs/ngx_core_module.html#load_module). Модуль оформляется в виде разделяемой библиотеки и загружается при помощи директивы load_module (например, "load_module modules/ngx_mail_module.so"). Из поддерживающих динамическую загрузку модулей отмечаются (https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/):
- 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-серверам. Среди поддерживаемых (https://www.nginx.com/products/application-load-balancing/#l...) методов балансировки: round-robin (круговой перебор, при котором соединения равномерно распределяются среди обработчиков), least-connections (запрос перенаправляется к менее нагруженному серверу), least_time (перенаправление на сервер, демонстрирующий наиболее высокую отзывчивость) и hash (перенаправление на основе хэша от определённого пользователем параметра, например, IP). Подробнее о новом модуле можно прочитать в анонсе (https://www.opennet.me/opennews/art.shtml?num=42076) открытия его исходных текстов;- Интегрирован модуль ngx_http_v2_module (http://nginx.org/en/docs/http/ngx_http_v2_module.html) с поддержкой протокола HTTP/2. Поддержка протокола SPDY (ngx_http_spdy_module), методы которого легли в основу HTTP/2, удалена из состава nginx. С особенностями HTTP/2 можно познакомиться в тексте анонса (https://www.opennet.me/opennews/art.shtml?num=42980) интеграции HTTP/2 в кодовую базу nginx.
- В состав включен модуль ngx_http_slice_module (http://nginx.org/en/docs/http/ngx_http_slice_module.html) с реализацией фильтра, разбивающего запрос на подзапросы, каждый из которых возвращает определённую часть ответа, что может быть использовано для увеличения эффективности кэширования больших ответов;
- Добавлена директива aio_write (http://nginx.org/en/docs/http/ngx_http_core_module.html#aio_...), управляющая применением AIO (http://nginx.org/en/docs/http/ngx_http_core_module.html#aio) при записи файлов;- Добавлена директива "proxy_cache_convert_head (http://nginx.org/en/docs/http/ngx_http_proxy_module.html#pro...)", управляющая трансляцией метода HEAD в GET при кэшировании;
- Добавлена директива zone (http://nginx.org/en/docs/http/ngx_http_upstream_module.html#...) в блок upstream, которая определяет зону разделяемой памяти, совместно используемую процессами-обработчиками);- В директиву "listen" добавлен параметр "reuseport", при указании которого сокет открывается с опцией SO_REUSEPORT, позволяющей сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений. Указанная технология позволяет упростить распределение обработчиков соединения по разным процессам, избавившись от отдельного звена, распределяющего запросы по рабочим процессам;
- В директиве "worker_cpu_affinity (http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_aff...)" реализована поддержка более 64 CPU и добавлен новый параметр "auto", при указании которого привязка процессов-обработчиков к доступным CPU производится автоматически;
- Реализована возможность одновременного использования нескольких директив "sub_filter";- В директиве "sub_filter (http://nginx.org/en/docs/http/ngx_http_sub_module.html)" обеспечена поддержка указания переменных в маске поиска замены.
- Реализован параметр "nohostname" при настройке ведения логов через syslog;- В модуле ngx_http_realip_module реализована поддержка переменной $realip_remote_addr (http://nginx.org/en/docs/http/ngx_http_realip_module.html#va...), содержащей оригинальный IP клиента;
- Добавлена поддержка системного вызова pwritev() (https://www.daemon-systems.org/man/pwritev.2.html);
- Добавлена возможность использования директивы "include (http://nginx.org/en/docs/ngx_core_module.html#include)" в блоке "upstream (http://nginx.org/en/docs/http/ngx_http_upstream_module.html#...)";
- Добавлена переменная $upstream_connect_time, в которую записывается время отклика upstream-сервера;- В fastcgi.conf, fastcgi_params, scgi_params и uwsgi_params добавлен параметр REQUEST_SCHEME.
- Добавлена опция "-T (http://nginx.org/en/docs/switches.html)" для проверки файла конфигурации с выводом дампа текущей конфигурации;
- Прекращена поддержка устаревших методов обработки соединений aio и rtsig;- По умолчанию отключена поддержка протокола SSLv3.
URL: http://mailman.nginx.org/pipermail/nginx-ru-announce/2016/00...
Новость: http://www.opennet.me/opennews/art.shtml?num=44316
>> По умолчанию отключена поддержка протокола SSLv3Это что-то невероятное
>Это что-то невероятноеЧто невероятного в отключение устаревшего и уязвимого протокола?
Наверное в том, что на дворе 2016 год, а его только отключили, вместо того, чтобы выбросить
> Увидел свет HTTP-серверУра!!! Наконец-то появился сервер, который видит свет! ☺
Друг спрашивает может ли он в Asp или Net?
Главное - в Джаву точно может
> Друг спрашивает может ли он в Asp или Net?может в качестве CGI, где обработку ASP/.NET/Mono выполняется другой стороной
> Друг спрашивает может ли он в Asp или Net?друг пусть копит на IIS.
Не говорите это слово, люди же кушают и читают, а Вы про гогно...
> друг пусть копит на IIS.Спасибо, передам.
В последней samba4 с патчами badlock SSLv3 и PlaintText совсем не работает без объяснять, так что это пустяки...
Кто-нибудь в курсе, testcookie в базовую поставку включить они не собираются? Или у них в NGINX Plus идет модулем?
Возможно средствами nginx сделать при не доступности одной ноды, отправлять всех на вторую без лишних скриптов которые будут проверять доступность нод. Пробовал использовать балансер с методом балансировки hash, но время от времени подвисает у клиента из за того что одна из нод не доступна как будто продолжаются отправлять заспросы на не работающаю ноду.
А это точно надо здесь спрашивать, а не в форуме nginx?
upstream... backup
Это тоже было использовано, но результат такой же. Похоже что без отдельной проверки на доступность ноды, полноценно перенаправлять не получится. Не помню с попытками и интервалами играл или нет, по умолчанию там вполне себе нормальные значения чтобы так не тупить.
Так healthcheck же для апстрима. Однако он поддерживался добровольцами до 0.7.* какой-то версии, потом ещё можно было врукопашную вкостыливать немного переписав код модуля, и где-то до версии 1.2.* у меня это получалось. Потом что-то сильно поменялось, а нужда отпала и я больше не дофичивал.
Как выяснилось чуть позже - его перестали поддерживать, видимо что бы включить в коммерческую версию: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#...
Ничего личного, только бизнес :)
Потестируйте кто-нибудь это
https://caddyserver.com/docs/proxyВроде синтаксис похож на nginx, но там из коробки healthcheck.
Да мне уже не надо, но всё равно вдруг кому пригодится. Хотя ща закричат что "на Go, не надо!" :)
увеличьте интервал повторного опроса фейл апстрима, и сократите число попыток
Неплюсовый будет постояно подвисать на дохлой ноде, потому что не умеет активные проверки, только пассивные.
Нет, юзай haproxy.
пока читал, подумал "ну наконец то!" более пяти раз
На rust можно писать модули к этому костылю?
Это далеко не костыль)
К счастью нет, но забить такому восторженному студенту, как ты, осиновый кол можно, чтобы со своим бредом не лезли из всех щелей.
А готовый модуль для Kerberos аутентификации имеется?
напиши динамический, благо уже вторую версию как можно
сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен, что ему не с апачем тягаться, а с systemd в самый раз(
> сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен,
> что ему не с апачем тягаться, а с systemd в самый
> раз(Их надо стравить. Посмотрели бы, кто кого съест: система инициализации с вебсервером внутри или наоборот.
> сысоев видимо молочный брат поттеринга, имхо nginx сейчас настолько перегружен и сложен,
> что ему не с апачем тягаться, а с systemd в самый
> раз(Дети! Сегодня мы будем играть в Угадайку!! А угадайте, кто с кем соревнуется, кто кого обгоняет и назовите имена участникао по... числу строк кода на Си в проектах:
| | 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% |...По материалам Open Hub (б.Ohloh), любезно предоставленным редакции ф.Black Duck.
---http://techrights.org/wiki/index.php/Black_Duck
> Дети! Сегодня мы будем играть в Угадайку!! А угадайте, кто с кем
> соревнуется, кто кого обгоняет и назовите имена участникао по... числу строк
> кода на Си в проектах:Подсказка: Апач не в числе угадываемых --
| #5 | C | 511,630 | 150,702 | 22.8% | 94,358 | 756,690 | 32.5% |> ...По материалам Open Hub (б.Ohloh), любезно предоставленным редакции ф.Black Duck.
> ---http://techrights.org/wiki/index.php/Black_Duck
>[оверквотинг удален]
> Дети! Сегодня мы будем играть в Угадайку!! А угадайте, кто с кем
> соревнуется, кто кого обгоняет и назовите имена участникао по... числу строк
> кода на Си в проектах:То ли дети боятся тролячего пеннета, то ли клован-аниматор из меня плохой, конкурс не удался - участие нулевое. Ладно, лентяи, ответы:
> | | Lang. | Code | Comment | Comm.% | Blank | Total | Lang. % |
> | GNU Bash | C | 107,704 | 22,942 | 17.6% | 22,910 | 153,556 | 64.1% |
> | Nginx | C | 122,257 | 5,332 | 4.2% | 44,335 | 171,924 | 71.8% |
> | Systemd | C | 270,920 | 31,560 | 10.4% | 84,998 | 387,478 | 82.8% |
> | GNU Emacs | C | 330,154 | 84,492 | 20.4% | 65,991 | 480,637 | 22.4% |
> | Apache HTTPD : C | 511,630 | 150,702 | 22.8% | 94,358 | 756,690 | 32.5% |Ответы на "5 с +":
* Празднослоняющийся соревнуется с OS GNU/Emacs, но пока отстаёт.
* Добавление веб-сервера в pid1 позволит "выиграть" у GNU Emacs-а!
* По пустым строкам - вдвое!
* И обогнать Apache?! (мелкий шрифт: кроме счётчика комментариев)
* ...если Лёня сдюжит пожрать nginx _целиком_! //Питон ли Леонид??
* Nginx не соревнуется с s-d, но уже "победил" bash.
* Nginx удвоил преимущество за счёт пустых Ж) строк, но пренебрЁг комментариями.* Баклушин трындел, что "скрипты сложны", теперь его "простой интерпретатор пятистрочников" вдвое __сложнее__ bash-а. Это победа за явным преимуществом.
* Война с Apache и GNU Emacs уже проиграна гнездом потеринговым: его "нет шелла, кроме Си" + "пять строчек хватит всем" бледнеют и сдуваются перед миллионом+ строк "XML"-я и elisp-а соответственно.
* да, этих метрик нет выше. (на 5+ надо делать больше задания! /ваш препод) Но % Си-кода в последней колонке намекает.* Сысоев знает, что конфигурация это сложно (а беззубое чавкание всёпожирающего -- всё ближе!) и, в техничном броске!, добавляет в конфиг JS. Леннарт и здесь ни с чем.
---
Индустрия и Аналитика на подъёме.
> ...По материалам Open Hub (б.Ohloh), любезно предоставленным редакции ф.Black Duck.
> ---http://techrights.org/wiki/index.php/Black_Duck
От Сысоева там само ядро да десяток модулей, остальная куча модулей от сторонних разработчиков/компаний.
ИМХО само ядро там не сильно то разрослось/изменилось.
> От Сысоева там само ядро да десяток модулей
> ИМХО само ядро там не сильно то разрослось/изменилось.Не, ну, я смотрю, _почту_ они вынесли/отделили в модуль. Это, надо полагать, _уменьшило_ "ядро" (~минимальную необходимую часть). Хотя, с другой стороны, механизмы/API динамической загрузки модулей его, ядро, таки чуть раздули.
Зачастили как-то релизы nginx-а...
> Зачастили как-то релизы nginx-а...однако :)
> Зачастили как-то релизы nginx-а...Вы. Не. Понимате.
http://www.opennet.me/openforum/vsluhforumID3/107442.html#10
Регулярно. Перед пляжно-конференционно-инвесторским сезоном.
О, так это же тот самый, многообещанный и долгожданный, стабильный релиз! Не признал.
> О, так это же тот самый, многообещанный и долгожданный, стабильный релиз! Не
> признал.Да! Ноги пообрывать тому, кто про Свет в теме написал, а про "стабильный релиз" вынес в первую строку текста. Анафема. ><//>Я тож, промахнулся в прошлый раз с 2-3 неделями.
При простом обновлении с 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, а также поддерживаться клиентами.
"