LINUX.ORG.RU
ФорумAdmin

Ставить ли nginx или наружу node?

 , ,


0

3

Нужно ли ставить поверх бэка nginx или голой жопой node express выставлять?

Давно надоело корявые конфиги правть, где тупо нет if/else. Да и вообще, для чего он? Ну модульки там всякие типа connlimit, но это и через iptables можно...что еще...ну логи...что еще может nginx что не может node/http/https модуль?

★★★★

Последнее исправление: gobot (всего исправлений: 3)

Есть причины ставить nginx. https, раздача статики, защита от ламерского ddos (nginx будет лучше держать коннекты, если клиенты просто коннектятся, но не отправляют запрос).

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

https
В ноде с этим вроде все ок

ddos

Слабый аргумент. Такое на ноде даже легче и гибче сделать...

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

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

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

Не ставить nginx конечно легче, но речь шла про то, что nginx на сишечке сможет отдать больше запросов (на статике), чем экспресс на ноде. Да и терминировать ssl он будет эффективнее. Но если это твой личный хелловорлд, который непонятно выстрелит или нет, то можно не парится.

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

А куча конектов это какая куча? Ну 50 картинок загрузить одновременно. Для этого есть keep-alive. Потом кеш браузера. В этом вообще проблем не вижу. А что еще, какие конекты? Вебсокет? Там 1000 хватит, но за это уже сокет отвечает, тут ограничение на уровне ос...

А ssl что? Можно подробнее? Что с ним не так?

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

У тебя уже бэк на ноде, зойчем полумеры, ставь её наружу голой жопойым портом.

ya-betmen ★★★★★
()
Ответ на: комментарий от goingUp

больше запросов (на статике)


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

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

Да и вообще, для чего он?

Для пхп и прочего, что самостоятельно не умеет в сложную логику. В ноде есть хттп-сервер либой/модулем, поэтому тут отдельный вебсервер снаружи не нужен.

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

Ну дык, к этому все и идет ) Аргументов против пока не нашел

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

Раздача статики, балансировка нагрузки, HTTPS (в том числе с обновлением сертификатов без полного перезапуска - привет, let's encrypt).

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

nginx на сишечке сможет отдать больше запросов (на статике), чем экспресс на ноде

Больше запросов/быстрее в контексте хттп(да и ноды тоже, хоть прикрытой сишечкой, хоть нет) - это рассуждения экспертов с дивана.

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

Если только балансировка...но я пока до этого не дошел

А https то в чем плюс? Ну если только без перезапуска...но...слабый аргумент. Раз в 3 месяца даже и полезно перезапустить, так сказать дать просраться, очиститься, от памяти демон http

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

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

antech
()

Вероятно проще считать, что это про разграничение ответственности. Слова nginx и net.core.somaxconn - налево. Слова node и javascript - направо. Для разных людей и разных работ, так сказать.

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

Да не, вера это другое. Я не сомневаюсь что сишка отдаст больше статики, но это критично для гугла может быть, но не в моем случае. Больше волнуют вопросы секурности, поддержки протоколов(ну хз,TLS 1.3, http 2.0 что там еще)

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

Никакие перезапуски nginx-у не требуются, ни раз в 3 месяца, ни раз в 100 лет.

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

nginx делают профессиональные программисты, а твои джаваскрипты - веб-макаки. Очевидно у первого всё лучше и с безопасностью и с поддержкой чего угодно.

firkax ★★★★★
()

я всегда ставлю поверх nginx, хотябы ради холявных сертификатов, и потом на node, или докер натравливаю, http2 упрощается, но его бы не использовал, 5 мес. назад одним запросом досили, отключение http2 помогло, хотя говорят nginx по фиксили

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

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

antech
()

Уже всё сказали - nginx гораздо быстрее и фичастее. Терминирование https, балансировка нагрузки, отдача статики, простейший WAF (типа ограничений по ip), редиректы на разные беки. Плюс удобный конфиг.

У меня nginx проксирует трафик и на бэк (fastapi), и на фронт (другой nginx с vuejs). На нем же авторизация, генерация сертификатов и терминирование https.

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

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

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

но вот твой ли это случай? ты же не пишешь с нуля, а взял и экспресс вкорячил, соотвественно что там и как в этом фреймворке никому неведомо.

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

в ноде есть воркеры, но это вариация на тему браузерных вебворкеров, те как бы треды, но через жопу, те можно говорить, что нода многопоточна, а можно и однопоточной называть, обв утверждения верны

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

О боже. Причем тут джаваскрипты? Nodejs, в частности его модуль HTTP\HTTPS написан на ЦЫ\ЦЫ++. Express это фреймворк поверх этого модуля. Да, он написан на javascript. В этом вся и гибкость (middleware, routes etc)

Очевидно

Не очевидно. Поясни

поддержкой чего угодно

Например? Что поддерживает nginx, чего не поддерживает Node\HTTP?

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

ну не хочешь, не надо, просто nginx это в первую очередь прокси, легко сделать виртуалные хосты, несколько доменов на одном ip, или разделение https://вася это одно, а https://вася/api это другое, много головной боли снимает.

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

nginx, хотябы ради холявных сертификатов

какая связь между nginx и letsencrypt? В том, что есть плагин certbot --nginx? Слабый аргумент...

и потом на node, или докер натравливаю

я это годами делал, больше по привычке. Сейчас не знаю, стоит ли это вся возня. Весомых аргументов тут так никто и не сказал... Ну да ладно, поставлю голой жопой node\http, а там видно будет

gobot ★★★★
() автор топика
  • Поддержка HTTP2/3, превращение их в HTTP1 внутри контура
  • HTTPS/TLS
  • Накопление запроса от медленных клиентов, не уверен насколько это актуально в ноде, но в синхронных обработчиках это обязательно
  • Хоть какой-то экран от взлома голой жопы всякими крафтами заголовков, переполнениями буферов и таймаутами. Никакой фреймворк так хорошо не тестировался на эту тему как нгинкс
  • Быстрее раздаётся статика, порой даже средствами ядра, через sendfile
neumond
()
Ответ на: комментарий от neumond

Поддержка HTTP2

В ноде тоже есть хотя мне и не надо пока...

HTTPS/TLS

И? Что TLS? Что HTTPS?

Хоть какой-то экран от взлома голой жопы всякими крафтами заголовков, переполнениями буферов и таймаутами

Можно пример?

Никакой фреймворк

Причем тут фреймворк?

Быстрее раздаётся статика

ну статику да, можно nginx заюзать, но не критично в моем случае, поэтому слабый аргумент

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

Если в ноде весь этот конструктор есть, то вперёд и с песней, счастливого секса. Обычно в проектах ещё есть разные адреса с разным назначением, не только бэк на ноде, собственно nginx используется ещё как L7 роутер.

neumond
()

Господа, не мешайте естественному отбору, чем больше идиотов будут оставлять ноду голым задом наружу, тем меньше идиотов будут оставлять ноду голым задом наружу…

Obezyan
()

firewall поставь. И настрой как надо.

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

ну так ограничь права юзверя и пусть равзлекаются …

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

ну статику да, можно nginx заюзать, но не критично в моем случае, поэтому слабый аргумент

А сжатие любого ответа не желаешь?

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

Пока статика меньше всего заботит. Это миллионы запросов в сек наверное нужно иметь,

Вы прикинте на вскидку. Какая у вас скорость соединения, допустим у провайдера заявлено 100Mb/sec. Это не значит, что у вас есть чистый 100Mb/sec, TCP/IP сеть должна быть на треть свободна, чтоб небыло коллизий. Значит у вас уже 75Mb/sec.

Двигаемся дальше, у вас HTTP сервер, значи еще примерно 4kb у вас будет в метаданных. Для кгурлого счета 105kb картинка.

Специально расчехляяю Nushell.

75Mb / 105kb
714.2857142857143

715 картинок по 100Kb в секунду.

Теперь давайте посмотрим сколько пользователей отметлось в данной теме.

http get https://www.linux.org.ru/forum/admin/17898027 | query web --query 'div.sign' | each { |e| get 1} | uniq
╭────┬───────────╮
│  0 │ gobot     │
│  1 │ gagarin0  │
│  2 │ goingUp   │
│  3 │ antech    │
│  4 │ ya-betmen │
│  5 │           │
│  6 │ KivApple  │
│  7 │ rtxtxtrx  │
│  8 │ Toxo2     │
│  9 │ firkax    │
│ 10 │ s-warus   │
│ 11 │ zolden    │
│ 12 │ skyman    │
│ 13 │ einhander │
│ 14 │ neumond   │
│ 15 │ Obezyan   │
│ 16 │ ivanich10 │
╰────┴───────────╯

15 пользователей.

715/15 = 47 подобный тем в секунду и всё. Ни каких миллионов запросов.

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

100Mb/sec. Это не значит, что у вас есть чистый 100Mb/sec

Если не значит - провайдер идет лесом за вранье. Даже если не гарантированная, то в 99% случаев полоса должна быть держаться на заявленной

TCP/IP сеть должна быть на треть свободна, чтоб небыло коллизий

С чего бы это? Каких коллизий?

715 картинок по 100Kb в секунду.

даже считать скучно. Картинки кешируются хорошо браузером. Все от контента зависит, если сайт какой-то новостной\блог где раз в час публикуюися фотки, то да, тут можно посчитать, а тут на форуме аватары закешировал 1 раз на 200 лет и все

Ради интереса глянул
www.linux.org.ru/photos/18654:1382745660.jpg

Cache-Control: max-age=315360000

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

TCP/IP сеть должна быть на треть свободна, чтоб небыло коллизий

С чего бы это? Каких коллизий?

На канальном уровне (Ethernet) сеть должна половину или две трети времени быть свободной, чтоб небыло коллизий между картами, когда они сразу начнут что-то передавать.

Интересный вопрос, так ли это сейчас. Все ли решает маршрутизатор, знающего бы кого-то в тред, чтоб он разрулил.

даже считать скучно. Картинки кешируются хорошо браузером

Это первое оценочное суждение. Со всеми «но и если» легко считается, что забить 100Mb/sec не так уж много запросов в секунду и надо.

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

С чего бы это? Каких коллизий?

В Ethernet среде все же карты говорят в одно простраство, и уже карта которой предназначается дейтаграмма её забирает.

Вот тут интересный вопрос как работает маршрутизатор, научился ли он уже лично карте отправлять сообщение. Особенно я в эту тему уже давно не вдавался, но на всякий случай при первых прикидках беру 2/3 от заявленной скорости.

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

С чего бы это? Каких коллизий?

Всё. Точно. Есть таблицы MAC адрессов на каждом порту, и этих коллизий уже нет.

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

Ну-ну. И аргументов 0. Сказал не-идиот

Обоссывать джаваскриптизеров фактами все равно бить детей. Вы же для простейших вещей тащите в ноду модули, а потом получаете тупейшие инциденты. Что ещё лежит в папке с модулями неизвестно никому. И оставлять это все мехом наружу могут только вчерашние фронтендщики.

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

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

На канальном уровне (Ethernet) сеть должна половину или две трети времени быть свободной

Может вообще сервер выключить, пусть отдыхает, чего зря шуметь?

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