LINUX.ORG.RU

Нужен ли nginx?

 , , ,


0

3

uwsgi и gunicorn сами могут отдавать страницы по HTTP/HTTPS. Отдаваемые данные генерируются динамически. Если вероятность дважды сгенерировать одинаковую страницу исчезающе мала, кешировать нечего, и по основному назначению nginx не используется. Так? Или от него есть польза где-то ещё?

Ситуация следующая. Веб-сервер получает REST-запросы и отдаёт простыни JSON, от нескольких килобайт до сотен мегабайт. Время генерации ответа — миллисекунды. Никаких статических объектов нет. Дважды получить одинаковый запрос маловероятно. Будет ли выигрыш в скорости, потребляемой памяти или нагрузке на процессор при отказе от nginx? Если это имеет значение, сервера виртуальные, в Докере.

(Мерять будем на следующей неделе.)

★★★

Если правильно помню, то gunicorn не умеет корректно (с точки зрения производительности) обрабатывать медленных клиентов, что потенциал для DoS. Или что-то подобное, но не кэширование. Почитай доку на gunicorn, например, там пояснено подробно.

Лично я поддерживаю буквально пару машин с очень низкой нагрузкой, но поставил впереди nginx в основном для более централизованного руления сертификатами для HTTPS.

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

У него есть разные типы воркеров, в т. ч. асинхронные. Это ты скорее всего про daphne говоришь.

(хотя я тоже могу нести чушь :))

intelfx ★★★★★
()

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

Deleted
()

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

SevikL ★★★★★
()

Когда будет больше одного бекенда — ты поймёшь зачем тебе нжинкс

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

http://www.blabla.ru - отдает контент через nginx+apache, proxy_*_timeout к примеру 600 сек.
кладешь апач для своих гадких целей, новый клиент увидит 502, а не новый повесится с ожиданием ответа до достижения таймаута или возврата апача.
если работать напрямую без nginx, то в этом случае будет connection refused. я про то, что прокси дает немного больше свободы на бэке.

SevikL ★★★★★
()

Думаю, не нужен. Но нгинкс уже нормально по правам настроен на 80 порт, для чего-то отдельно это пляска с правами.

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

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

Legioner ★★★★★
()

1) Будет ли выигрыш в скорости, потребляемой памяти или нагрузке на процессор при отказе от nginx

нет

2) Если это имеет значение, сервера виртуальные, в Докере.

При избавлении от Докера будет.

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

Не вариант, приложение отключается же. Это должен прокси делать.

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

gunicorn не умеет корректно (с точки зрения производительности) обрабатывать медленных клиентов, что потенциал для DoS.

На Хабре пишут, что уже починили. Не проверял.

Чем тут помогает nginx? Автоматически рвёт соединение в надежде, что клиент и сервер правильно поймут намёк? Или делает что-то более умное?

Лично я поддерживаю буквально пару машин с очень низкой нагрузкой, но поставил впереди nginx в основном для более централизованного руления сертификатами для HTTPS.

В случае докера сертификаты кладутся в директорию на хосте, которую все монтируют.

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

Когда будет больше одного бекенда — ты поймёшь зачем тебе нжинкс

Если будет другой бэкэнд, он будет на другом порту и в другом контейнере. Предлагаешь сделать отдельную ВМ с nginx и гонять трафик ко всем через неё? Что это даст?

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

Как я понял речь об отдельно стоящем API. Ну там какое-то api.nenuzno.com, зачем там статика?

Верно понял.

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

1) Будет ли выигрыш в скорости, потребляемой памяти или нагрузке на процессор при отказе от nginx
2) Если это имеет значение, сервера виртуальные, в Докере.

При избавлении от Докера будет.

То есть оверхэд от Докера больше? Звучит правдоподобно. Пруфлинки можно?

olegd ★★★
() автор топика

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

i-rinat ★★★★★
()
Ответ на: комментарий от olegd

Чем тут помогает nginx?

В случае с медленными запросами? Будет медленно и печально (но очень дёшево) ждать когда клиент таки отправит весь свой запрос, и уже потом перенаправит этот запрос бекенду.

В случае докера сертификаты кладутся в директорию на хосте, которую все монтируют.

Терминировать ssl сервером приложений это как-то…

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

Терминировать ssl сервером приложений это как-то…

Как? Опасно? Чем?

olegd ★★★
() автор топика
Ответ на: комментарий от i-rinat

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

Спасибо.

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

В случае докера сертификаты кладутся в директорию на хосте, которую все монтируют.

У меня не все http(s) сервисы из докера работают, поэтому, увы, не канает.

Про медленных клиентов i-rinat всё верно сказал.

lu4nik ★★★
()

Конечно, нужен. В качестве фронта. Чтобы скрыть расположение бэка. Фронтов можно наплодить кучу за копейки в vps.

После первого же ddos понимаешь, что надо скрывать бэки.

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

Чем тут помогает nginx? Автоматически рвёт соединение в надежде, что клиент и сервер правильно поймут намёк? Или делает что-то более умное?

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

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

Ты смеёшься? Это же жопич, какие пруфлинки.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.