Доступен (http://mailman.nginx.org/pipermail/nginx-announce/2017/00020...) новый выпуск основной ветки высокопроизводительного HTTP-сервера nginx 1.13.4 (http://nginx.org/), в котором реализованы следующие изменения (http://nginx.org/en/CHANGES):- В состав добавлен модуль mirror (http://nginx.org/en/docs/http/ngx_http_mirror_module.html), позволяющий зеркалировать поступающие запросы на другие серверы. Клиенту возвращается результат обработки запроса от основного обработчика, а результаты, возвращённые зеркалируемыми бэкендами, игнорируются. При помощи зеркалирования можно достаточно просто организовать работу синхронно обновляемого резервного сервера для таких сайтов, как web-форумы;
- Решена проблема с обрывом соединений при выполнении операции тестирования корректности конфигурации на платформе Linux, в случае использовании опции "reuseport" в директиве "listen";
- Решена проблема с недоступностью тела запроса для подзапросов, если используется проксирование и в процессе заполнения кэша осуществлена запись в файл;
- Улучшена поддержка платформы Windows: налажена работа чистки кэша в соответствии с лимитом, заданным через парамер "max_size", решены проблемы с выделением разделяемой памяти и устранён крах процессов-обработчиков при использовании директивы "zone" в блоке "upstream".URL: http://mailman.nginx.org/pipermail/nginx-announce/2017/00020...
Новость: http://www.opennet.me/opennews/art.shtml?num=46989
mirror, хорошая идея, интересно для вебсокета работает?
По секрету скажу, что оно и до этого существовало (недокументировая опция была), но работало весьма себе. Большие клиенты, похоже, решили надавить, а Сысоев/Бартенев/и_ко решили сразу опенсурцнуть. Для websocket маловероятно, что заведётся — это ж, по сути, stream proxy получается. Запрос/параметры/тело/ответ не различить.
Вы про костыль с post_action, или существовал именно mirror?
Именно post_action http://mailman.nginx.org/pipermail/nginx/2012-November/03619...Не знаю почему он костыль? Как по мне модуль делает тоже самое (особенно если сравнить код)
> Улучшена поддержка платформы WindowsПустая трата времени и ресурсов.
Ну и кто ты такой чтобы осуждать их за то, как они проводят своё время?
Не, ну если хотят поддерживать платформу на которую ставят их софт от силы 5% от общего числа.Вообще интересно было бы глянуть статистику nginx по ОС.
Если у тебя в ЦОД-е есть поддерживаемый сервер на WS и ты можешь запустить на нём то что считаешь нужным здесь и сейчас(для внутреннего использования к примеру) или у тебя есть перспектива погрязнуть в бюрократии выбивая себе "правильный" сервер, то что ты выберешь, при этом понимая что находишься на этапе разработки прототипа который взлетит с вероятностью 10-20%?
Подниму виртуалку и запущу nginx в нормальном для него окружении.
> Подниму виртуалку и запущу nginx в нормальном для него окружении.молодец, теперь тебе надо поддерживать в рабочем и актуальном состоянии и виртуалку, и ее хост. И зачем ты это сделал, если можно было просто запустить nginx на хосте, ась?
Это лучше, чем поддерживать разрабатывать на платформе с одними нюансами поведения, а эксплуатировать с другими.
Хинт: под виндой и линухом не все работает одинаково.
> Вообще интересно было бы глянуть статистику nginx по ОС.что-то мне подсказывает, что она бесполезна - там, где используют nginx из под винды, все равно на выходе стоит либо nginx'овый фронтенд, либо какой-нибудь appliance, и хрен ты узнаешь, сколько их было и каких.
то есть статистика в данном случае - всего лишь очень большая ложь.
Лучше бы healthcheck допилили в opensource
Иж чего захотел, если вырос до такой степени что тебе он нужен, заплати денежку. Хотя как вариант можешь им написать и по клянчить на халяву.
Поддержку brotli никак не хотят осилить. Даже статику, по аналогии с gzip_static. Малюсенький патчик https://trac.nginx.org/nginx/ticket/798
То ли денег за это хотят, то ли ...
то ли нафиг никому оно не надо.
(ну, может, кроме гугля, но он уже и сам о себе позаботился - и если потом окажется, что посадил какую-нибудь out-of-bounds непосредственно в библиотеке (в коде nginx вряд ли) - ломанут гугля, а не всех счастливчиков - и тухлые помидоры гуглю)
Смысл всех этих .gz давным-давно в прошлом, каналы безразмерные (или бездонные?), а вот cpu всегда не хватает. К тому же большая часть так-называемого-веб-контента сегодня несжимаема.(страдания гугля и cloudflare оставим, пусть страдают дальше)
Ну, не стоит говорить за всех сразу. Не все сидят на оптике, есть "счастливые" обладатели мобильного инета со слабым сигналом или в забитом под завязку эфире. И тогда скачать 4 метра или 5 - разница существенная.
Никаких уязвимостей не будет - если речь про brotli_static - просто отдавать файл.br если он есть на диске, разве что будет лишний вызов stat.
И проц не просядет, распаковке бротли жрёт примерно столько же, сколько и gzip.
http://www.gstatic.com/b/brotlidocs/brotli-2015-09-22.pdf
> И тогда скачать 4 метра или 5 - разница существенная.существенная, только на самом деле разница будет 50 или 40 килобайт, и то, если ты читаешь сайт газеты "правда".
Ну есть же девтулзы и network в них - открой да и посмотри на объемы скачиваемого.1. графические элементы оформления (даже на опеннете - логотип, реклама, кнопки)
1a. шрифты... впрочем, они все равно с fonts.google.com
2. (содержательные, не оформление) графика и видео внутри страницы, если сайт чуть современней опеннета
это несжимаемо вообще
3. скрипты и css'ы - те, кто страдают от лишнего траффика, давно уже a) все обообфусцировали до минимума, b) саутсорсили куда-то в rawgit, если нельзя напрямую из cdn jquery/гугля/амазона/тыщи их и все равно оно на их сервер с их бролтем даже и не полагается c) вообще-то по хорошему оно должно кэшироваться, и дальше if-modified-since дело все равно не заходит, вечная беда горе-вебдизайнера, приходится добавлять к имени файла какой-нибудь мусор, чтобы, наоборот, избежать кэша
то есть оно во-первых, плохосжимаемо в принципе, во-вторых, выгода от сжатия микроскопическая на фоне управляющего траффика - даже если раздавать по-старинке, с собственного сервера, а это совсем немодно.и вот где-то вот ту-у-у--ут мы наконец-то докопались до собственно .html, который мог бы быть и .br (хм-хм, а часто тебе попадает совсем статический html?) , но смысл? Его-то килобайты, а счетчик траффика у тебя уже мегабайты насчитал (а чаще десятки).
гугл и какой-нибудь факбук - отдельная песня, но они-то уже о себе позаботились, включая и продавливание поддержки во все браузеры, у них для этого есть ресурсы.
не собирается из исходников с модулем ngx_pagespeed(
Про mirror может кто нибудь более внятно объяснить?
Что оно вообще делает?
> Что оно вообще делает?делает дублирование запроса на миррорящие серверы.
То есть на твой GET myHorseporn.jpg?token=1343525626 с server1 делает такой же GET с server2,3 и 4. Результат выбрасывает в /dev/null (тебе уже ответил server1), но сервера 2,3 и 4 думают, что ты к ним за этим зашел (и если на такой get внутри должна была сработать какая-то небанальная механика - она срабатывает).В результате, даже когда налетчики из лиги борцов за освобождение лошадок взорвали датацентр с сервер1, бабки с твоего счета мы все равно спишем, так как у нас остались еще три, и в их логах все в наличии, не отбазаришься.
Понятно, что это чудовищно неэффективный способ, поскольку на один твой запрос получается четыре к четырем разным серверам, зато можно головой вообще только есть (ну или ничего не знать о начинке тех серверов и даже доступа к ней не иметь).
Ещё помогает дублировать боевые запросы на сервер разработчиков.
Так можно мучить новую сборку боевыми запросами.