LINUX.ORG.RU

nginx 1.23.0

 , ,


1

1

nginx - это простой, быстрый и надёжный Web-сервер, написанный на языке Си.

Основные изменения в этой версии:

  • Изменен внутренний API, строки заголовков теперь передаются в форме связанного списка.
  • Строки заголовков с идентичными именами теперь объединяются при передаче в бэкенды FastCGI, SCGI и uwsgi, в методе $r->header_in() модуля ngx_http_perl_module и в переменных $http_..., $sent_http_..., $sent_trailer_..., $upstream_http_... и $upstream_trailer_....
  • Уровень логов для ошибок SSL application data after close notify понижен с crit до info.
  • Исправлена проблема с зависанием соединений в nginx, собранном на Linux-системах с ядром 2.6.17 и новее, но используемом на системах без поддержки EPOLLRDHUP (к примеру, при применении эмуляции epoll).
  • Исправлена проблема с кэшированием ответов, если заголовок Expires запрещал кэширование, а Cache-Control разрешал.
  • Исправлены проблемы, проявляющиеся, если бэкенд выдавал в ответе в несколько заголовков Vary и WWW-Authenticate.

Также одновременно с выходом новой версии nginx, вышла новая версия njs 0.7.5

>>> Подробности

★★★

Проверено: cetjs2 ()

Ответ на: комментарий от hobbit

Опять же, «простой». Кому он простой? Я сейчас сходил в список директив, насчитал почти 800 штук. Мы часто называем панель управления, на которой 800 крутелок, простой?

thesis ★★★★★ ()

Имеет ли смысл использование сабжа (в одиночку) со сторонним аллокатором, например, jemalloc или mimalloc? Насколько я знаю, nginx использует собственный аллокатор - не будет ли отрицательного эффекта от подмены malloc?

P.S.: Был бы рад услышать развернутый ответ касаемо аллокации в Nginx. Больше интересует кейс с использованием mimalloc(-secure). Спасибо.

inspiringbreeze ()
Ответ на: комментарий от LongLiveUbuntu

Лимиты выставлял

Какие, large_client_header_buffers? Сколько выставлял и сколько шлет браузер?

thesis ★★★★★ ()

Так получилось, что могу сравнить и apache и nginx и lighttpd.

По скорости, а именно по TTFB страницы с <?php phpinfo();?> - lighttpd + fastcgi (php-fpm) быстрее всех.

На втором месте nginx. Соответственно apache на последнем.

По фичам, lighttpd деревянный, поэтому рассматривать его не стану.

Apache в фичастости далеко впереди nginx'а, и фич тут много, начиная от гибкого разделения прав (кому, куда и на что есть доступ), и заканчивая хитрожопыми парсерами с синтаксисом sed.

Самая главная фишка (быть может благодаря отсутствию которой nginx и быстрее) - это поддержка Апачем пользовательских конфигураций без необходимости суперпользовательских прав, и без вылета при некорректности конфигурации. Юзкейсов море, первый по важности из которых - интеграция кастомерской CMS-ки с веб-сервером. Это нужно для гибкого создания rewritов (согласитесь в интернет магазине website.com/cpu/intel/2 выглядит приятнее чем website.com/cat=3&subcat=1&page=2), для управления кешами, включая expires на стороне клиента, и прочее; второй по важности - возможность блокировать\разрешать доступ с определенных IP, не дергая при этом админа, как вручную, так и каким-нибудь firewall plugin.

Есть еще одна апаче-подобная приблуда, которая практически совместима с фишками apache, но по скорости работает на уровне nginx (но никогда не отваливается в отличие от nginx'а, если количество реквестов превысило requests'children) благодаря присутствию весьма хитрожопого кеширования, сходного с fastcgi-cache nginx'а, но работающего более адекватно, например подхватывающего изменения в кешируемых файлах.

Это я все к чему веду: каждая задача нуждается в своем инструменте. Кусачки и плоскогубцы похожи, и при желании можно. Но не нужно =)

windows10 ★★★ ()
Ответ на: комментарий от LongLiveUbuntu

client_header_buffer_size сотни k;

client_body_buffer_size пару m;

client_max_body_size пару g;

windows10 ★★★ ()
Ответ на: комментарий от MOPKOBKA

Ыыы, звонили из 2005, просили вернуть их техники на место.

untitl3d ()
Ответ на: комментарий от menangen

А LiteSpeed когда нужна максимально актуальная реализация QUIC.

ComradeDOS ()
Ответ на: комментарий от caoutchouckcha

прости, я давно не в теме... Современный апач ведь не делает больше fork на каждый коннект?

Shadow ★★★★★ ()
Ответ на: комментарий от permafrost

когда-то http://oops.aha.ru/ на солярке и FreeBSD был очень хорош. Порнохостеры его до появления nginx использовали. Особенно прекрасны были фичи типа кеша по заданным параметрам - вводишь URL, которые могут быть закешированы, ставишь время жизни секунду, и стоящий за ним апач перестаёт тормозить.

Shadow ★★★★★ ()
Ответ на: комментарий от caoutchouckcha

Ну mod_xxxxx в апаче это сильно на любителя, который знает, зачем это ему.

Shadow ★★★★★ ()
Ответ на: комментарий от CYB3R

Lighttpd - «Да как эту функцию включить?!»

Caddy - «Да как эту умность выключить?!»

Radjah ★★★★★ ()
Ответ на: комментарий от Anoxemian

апачь функционален и быстр в своих задачах, nginx в своих и не надо их фанатично противопоставлять. Webdav, modrewrite, отдача файлов крупнее 1гб apache в этих задачах не перещеголять, много мелких файлов простые конфиги nginx. Знать надо оба их плюсы и минусы

s-warus ()
Ответ на: комментарий от CYB3R

натрави ab (apache banchmark) на такие файлы nginx будешь удивлён как и я, хотя такие нагрузки (видео) сейчас на плечи CDN ложатся

s-warus ()
Ответ на: комментарий от s-warus

А какие технологии используют CDN? Сдаётся мне, что тот же nginx и apache. Вряд ли [url=https://cherokee-project.com/]Cheerokee[/url].

CYB3R ★★★★★ ()

А я могу его использовать его на локалхосте, чтобы свой сайт(статический html) перенести с хостинга на работу, со статическим ip или для этого проще будет apache завести?

xwicked ★★ ()
Последнее исправление: xwicked (всего исправлений: 2)
Ответ на: комментарий от windows10

Нормальные «большие пацаны» работают на связке:

apache traffic server + apache http server + apache tomcat + java

и в ус не дуют от отсутствия nginx :)

suffix ★★ ()
Ответ на: комментарий от CYB3R

А есть тесты, показывающее превосходство апача при отдаче файлов крупнее 1гб?

А с чего ты взял, что превосходство показывается именно в тестах ?) Здесь речь вообще не о стороне клиента.

windows10 ★★★ ()
Ответ на: комментарий от windows10

А с чего ты взял, что превосходство показывается именно в тестах ?)

А в чем, в самомнении? Гордый индеец важнее глупого двигателя_х?

thesis ★★★★★ ()
Ответ на: комментарий от thesis

apache traffic server - просто проксирует охрененное кол-во запросов на кучу apache http server серверов и делает это очень хорошо и быстро.

apache http server - отдаёт статику (разумеется AllowOverride выключен ибо он не нужен при такой схеме и всё отдаётся очень шустро).

apache tomcat - работает с java

suffix ★★ ()
Последнее исправление: suffix (всего исправлений: 1)
Ответ на: комментарий от thesis

Так это и не секрет никакой.

Даже при обчный работе apache http server в качестве вебсервера с каким нибудь WP можно перенести все правила .htaccess в конфиги самого apache (c разнесением по локациям разумеется) и отключить AllowOverride - и вдруг выяснится что и статику apache раздаёт не хуже nginx :)

P.S.

В подавляющем большинстве случаев это конечно излишне. Проще связку nginx + apache использовать или nginx+php-fpm конечно.

suffix ★★ ()
Последнее исправление: suffix (всего исправлений: 2)
Ответ на: комментарий от xwicked

А я могу его использовать его на локалхосте, чтобы свой сайт(статический html) перенести с хостинга на работу, со статическим ip или для этого проще будет apache завести?

ставь nginx он проще-легче если, понадобиться apache webdav (доступ редактирование сайта под win) потом добавишь-настроишь (а скорее всё это не нужно), короче ставь nginx

s-warus ()
Ответ на: комментарий от thesis

А в чем, в самомнении? Гордый индеец важнее глупого двигателя_х?

Ты потерял вторую часть цитируемого тобой предложения, там все написано.

windows10 ★★★ ()
Ответ на: комментарий от windows10

Во второй части написано, что «речь не про сторону клиента», что в общем очевидно, раз уж речь идет про сравнение вебсерверов.

thesis ★★★★★ ()
Ответ на: комментарий от thesis

Во второй части написано, что «речь не про сторону клиента», что в общем очевидно, раз уж речь идет про сравнение вебсерверов.

Ну так какие тебе нужны «тесты» ? Поставь оба и проверь.

Может тебе еще нужны тесты того что vim лучше справляется с большими файлами, чем mcedit, который их вообще не открывает ? :D

windows10 ★★★ ()
Ответ на: комментарий от windows10

Ну так какие тебе нужны «тесты» ? Поставь оба и проверь.

Погоди. Так чем еще, кроме тестов, показывается превосходство?

thesis ★★★★★ ()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Погоди. Так чем еще, кроме тестов, показывается превосходство?

Бинарным фактом: есть\нет, работает\не работает, тормозит\не тормозит, жрет память\не жрет память, и тд.

Прекращай словоблудие, поставь и посмотри.

windows10 ★★★ ()
Ответ на: комментарий от windows10

Бинарным фактом: есть\нет, работает\не работает, тормозит\не тормозит, жрет память\не жрет память, и тд.

Погоди. А если тормозит и жрет память и то и другое, но по-разному?

поставь и посмотри

Погоди. Это же ты мне щас предложил провести ТЕСТЫ?

thesis ★★★★★ ()

Кто нибудь пробовал Cherokee?

splinter ★★★★★ ()
Ответ на: комментарий от thesis

Погоди. А если тормозит и жрет память и то и другое, но по-разному?

Погоди. Это же ты мне щас предложил провести ТЕСТЫ?

Я там выше написал про словоблудие.

windows10 ★★★ ()
Ответ на: комментарий от thesis

Ты там выше написал херню про тесты и шлангуешь.

Ага. Всяко лучше, нежели потратить время на создание скриншотов с красными стрелками для альтернативно-одаренных, которым пофигу о чем спорить, хоть о значении слова «тесты».

Все, я прошланговался, проходи дальше.

windows10 ★★★ ()
Ответ на: комментарий от inspiringbreeze

От подмены аллокатора nginx хуже не будет.

Насколько я знаю, nginx использует собственный аллокатор

Не совсем. Nginx использует «пулы памяти», в которых память может только аллоцироваться, а освобождение выполняется только при освобождении пула. Реаллокаций не выполняется. У каждого запроса обычно один пул. Так что аллокатор nginx - это легковесная надстройка над malloc. Malloc’у любого аллокатора работать в таком режиме не должно составлять труда.

Если же вы используете какой-нибудь сторонний модуль nginx, который выполняет свою обработку и самостоятельно аллоцирует память в обход пулов памяти nginx, то это другое дело.

Sorcerer ★★★★★ ()
Последнее исправление: Sorcerer (всего исправлений: 1)
Ответ на: комментарий от ComradeDOS

В случае с копипастой инклуд как раз и будет решением.

Конечно будет, только если речь не идет про использование переменных в путях к ssl ключам, о чем я тебе написал уже два или три раза, плюс i-ринат писал выше. И это никак не решается, если у тебя есть другое мнение - пример в студию.

Ты может и правда не понимаешь, о чем речь?

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

Вместо example.com ты переменную $host в конфиг nginx не вставишь. Если б можно было, то понятно что можно инклудить общий конфиг с переменными и все.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 3)
Ответ на: комментарий от windows10

Так получилось, что могу сравнить и apache и nginx и lighttpd.
именно по TTFB страницы с <?php phpinfo();?>

Дальше не читал. php-дебил (я сам такой же) везде будет совать свое php, где надо и где не надо. Твой тест не называется «сравнение веб-серверов», а скорее «сравнение веб-серверов с php-fpm (причем там непонятно, апач тоже с ним был, или с mod_php?». В любом случае, это неинтересно.

Ты б там демон на ерланге попроксировал ими, или еще чем-то нормальном, а с пхп так себе.

Юзкейсов море, первый по важности из которых - интеграция кастомерской CMS-ки с веб-сервером.

А не, и правда эникей, зря я выше все это писал :).

caoutchouckcha ()
Ответ на: комментарий от caoutchouckcha

Поскольку 80% сайтов планеты написано на PHP - то за свой erlang можешь забыть.

Мне важнее как веб-сервер себя ведет в более менее повседневной работе, а не в каких-то фантастических случаях.

А не, и правда эникей, зря я выше все это писал :)

Даже если и так. Весь мир не может и не должен состоять из суровых хрен-пойми-кого, проксирующих демоны на ерланге. Тебя просто бесит что в 2022 году любой уиндузятник может написать apt\yum\pkg\zypper install httpd php mysql - и у него будет собственный веб-сервер. Илитизм испаряется.

P.S.

В любом случае, это неинтересно

Я два квартала бежал за вами, чтобы сказать как вы мне не интересны (с)

windows10 ★★★ ()
Ответ на: комментарий от windows10

Мм, не. Я вообще понимаю твою позицию и согласен с ней, я просто считаю что мы о разных вещах говорим. Для этого я специально подписал «php-дебил (я сам такой же)», если что.

TTFB в твоем случае просто нет смысла измерять, если задача состоит в измерении скорости веб-сервера (проксирующего, или mod_php иногда? Если что, это очень разные юзкейсы измерений).

Ты очень агрессивный - «Так получилось, что могу сравнить и apache и nginx и lighttpd.». Наверное это очень круто, респект. Ты взял свою какую-то типичную задачу (phpinfo^^), померял под нее веб-серверы, сделал выводы.

Ну классно. Просто бенчмарки немного не так работают.

Весь мир не может и не должен состоять из суровых хрен-пойми-кого, проксирующих демоны на ерланге. Тебя просто бесит что в 2022 году любой уиндузятник может написать apt\yum\pkg\zypper install httpd php mysql - и у него будет собственный веб-сервер. Илитизм испаряется.

Нет, это совсем не так. Ты сам придумал на что обидеться и сам обиделся, а обвиняешь в этом меня.

upd: Если что, у меня процентов 80 кода на php, в том числе демонов. Хоть я и считаю это колхозным, и планирую переехать, но я не имею иллюзий о скорости работы всего этого. Оно нормально работает, особенно в веб - но тупо неудобно. И ты уж не обижайся, когда мы смеемся над твоими задачами с джумлами и вордпресами - это немного не то совсем.

У меня сейчас на одну ноду с php-fpm идет 7-9к рпс и я думаю что это крипота, надо что-то менять.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 3)
Ответ на: комментарий от caoutchouckcha

У меня сейчас на одну ноду с php-fpm идет 7-9к рпс и я думаю что это крипота, надо что-то менять.

Ну и к вопросу

Весь мир не может и не должен состоять из суровых хрен-пойми-кого, проксирующих демоны на ерланге.

Эта еботня с 10к рпс на пике на php-fpm (в реальности 10к бывает редко, да и то не считаю это дохера нагрузкой) жрет целый 5950х, молчу про эпики вообще.

Тем временем, демон на ерланге кушает что то там хз, 500 мб озу (и то с запасом) и какой-нибудь процентик одного ядра. Я думаю если на него пущу на порядок или два выше трафик, то сервер вообще не особо заметит. Жаль не опенсурс, да. Ты кстати вроде из сео тусы вроде был, могу скинуть о чем говорю.

После этого я совсем не хочу спорить с вами про cms, вордпрес и джумлы. Мне и так больно :)

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 1)
Ответ на: комментарий от windows10

Мне важнее как веб-сервер себя ведет в более менее повседневной работе, а не в каких-то фантастических случаях.

Слушай, так у тебя и не работа, а поддержка и допиливание чужого всего? Я не осуждаю же. Ну фрилансишь и норм, я не уверен что там кому-то нужно в твоем кругу кроме условного «TTFB».

Ты пилишь вордпрессы на апворке, причем тут бенчи веб-серверов, ну? Есть же интересные задачи и интересные вопросы, которые можно обсудить прямо тут или в хз, разделе веб-дев или admin. Толку от твоих ttfb, если там вордпрес и левый хостер.

Го лучше обсудим, как работать с постгресом на сотни терабайт, вот это сохранится для истории и будет всем полезно. Ну или кто из веб-серверов покажет себя лучше на проксировании или отдаче статики при стопицот рпс, тоже будет интересно.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 2)
Ответ на: комментарий от LongLiveUbuntu

А как побороть ошибку «Headers too large»?

Внезапно, посмотреть на хедеры. Чем шлешь запрос? Если хост какой-то конкретный, то там просто может упоролись. Если при этом из браузера отправляется, то смотри заголовки :) И если из браузера отправляется, то в в современных есть copy as curl и еще проще стало теперь.

Дико обожаю снифать http?s трафик.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 1)
Ответ на: комментарий от windows10

Я могу с тобой поговорить и про вордпрессы, и про веб-серверы отдельно, но хотел бы разделять это.

В любом случае, тред ведь про nginx, а его основная задача не состоит в том, что б проксировать вордпресы твоим клиентам, ну? Он может делать намного больше, чем тебе нужно. Не надо твои таски подпиливать под всех, пожалуйста.

Про демона на ерланге писал выше не ради понтов, а потому что это было удобно: меня спросили, ставить ли его голой жопой наружу, я сказал нет - спроксирую через nginx (там кстати хз ваще, кто из них быстрее в итоге, могу потестить если кому интересно) - все ок.

Мне кажется nginx там немного проиграет на простейших тестах, но в реальной жизни и на реальном трафике победит.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 1)
Ответ на: комментарий от suffix

Даже при обчный работе apache http server в качестве вебсервера с каким нибудь WP можно перенести все правила .htaccess в конфиги самого apache

У вордпресс там только одно правило - все запросы роутить нужно на index.php, но видимо энтерпрайзные васяны этого не знают.

caoutchouckcha ()
Ответ на: комментарий от windows10

Ну и я конечно понимаю что у тебя весь доход на этом построен - мешать не буду. Только в техразделы со своими маня-бенчмарками не лезь, плиз. Мир там немного шире, чем твои фриланс-заказы «как починить вордпрес». Я не осуждаю, но блин :) неинтересно же, и мы тут не письками меряемся. Можете там со спуфингом сделать клуб своеобразный.

caoutchouckcha ()
Последнее исправление: caoutchouckcha (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.