LINUX.ORG.RU

Обязательно ли использовать nginx с сайтом на node/express?

 , , , ,


1

2

Планирую написать сайт на express. Купить для него средней производительности vps с 1гб памяти, рублей за 200-300р. Хочу повесить на pm2. Рассчитываю максимальную посещаемость 100к в день. Нужно ли мне мудрить с nginx? Понимаю, что nginx для статики и для серверов с мощной нагрузкой, но нужен ли он в моем случае?, в проектах, типа песочница, начальный старпап, проверить идеи и т.п.

Да, что еще скажете по связки express с postresql. Смотрел тесты от techempower benchamrk, именно express, работает с postgresql, как mongodb, а вот mysql летает.



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

но нужен ли он в моем случае?

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

Непонятен сам вопрос, ставится легко, настраивается быстро. Какие могут быть контраргументы против nginx?

vvn_black ★★★★★
()

посещаемость 100k в день - это многовато. Я не уверен что хватит vps с выбранной конфигурацией.

p.s. у бегета сейчас скидки на выделенные серверы.

XoFfiCEr ★★☆☆
()

Оптимизированней всего для KVM это debian 8 с Mysql.
Nginx обязателен, правильность его настройки можно проверить с https://developers.google.com/speed/pagespeed/insights/
Ubuntu ставится не через серверную версию и не с их сайта. А через lubuntu-18.04-alternate-amd64.iso, в текстовом установщике с режимом эксперта, сейчас это самая стабильна версия для сервера.

red_rain
()

Можно не мудрить. 100к в день это смешная нагрузка. Но это просто удобно, тот же HTTPS сертификат настроить, например, с nginx будет удобней.

PostgreSQL надо выбирать всегда, лучше базы на сегодня просто нет.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

Nginx гораздо эффективнее отдаёт статику, а также позволяет гибко настраивать преобработку запросов (балансировку между инстансами, добавление/удаление заголовков, переадресацию и т. д.). С необходимость этого рано или поздно любой проект сталкивается и если nginx уже стоит, то всё заключается в правке конфига и systemctl reload nginx, а если nginx нету, то будет даун-тайм, пока ты будешь его ставить и всё перенастраивать (и если проект уже пользуется юзерами, это может быть нежелательно). Плюс отсутствие nginx и лень по его установке приведёт к засорению кода js костылями, которые обычно реализуют в конфиге nginx.

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

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

1гб для начала, я имею ввиду максимум 100к, а так, дай бог, насобирать хоть тыщенку

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

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

а почему не centos? или opensuse даже?

ycoodr
() автор топика

Можешь caddy глянуть - у нас стоит перед node и все довольны, конфиги понятные и удобные

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

Постоянно обновляемый. Без архивных или стабильных версий.
Можно отключить обновления. Но если потом что-то добавить надо будет. Твой самопальный код пахать не будет. Да ещё и шаблоны полететь могут.

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

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

Ковришки есть? Готова маза, ща шкуры придут мы на фене с ними кинем понт. До всех дошло?

а так, я отключаю всегда все обновления, только lts

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

Зачем тебе эти тесты (которые с вероятностью 99% неверные)? У тебя примерно 2 запроса в секунду. Это вообще не нагрузка. Смотри на фичи, стабильность. И тут постгресу нет равных. Любая база в реальности, а не в бенчмарках упирается в диск и разницы нет, будет у тебя постгрес ждать ответа от диска или мускуль.

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

я не понимаю, зачем мне он нужен

Раздать пару тыс. запросов в секунду из кеша, если вдруг твой прожект запостят на какой-то популярный ресурс.

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

У тебя примерно 2 запроса в секунду. Это вообще не нагрузка.

Так неправильно считать. Равномерного разброса точно не будет.

TO ТС:

В целом, если не будет больших пиковых нагрузок за короткий период времени, то указанной конфигурации KVM VPS вполне достаточно, что для postgresql, что для mysql. Запросы EXPLAIN’ить нужно в процессе разработки. А Nginx лучше сразу, все равно, рано или поздно его придется ставить.

P.S. Как выше заметили, я бы тоже на подобные бенчмарки не опирался и брал бы postgresql. Он реально лучше мускула.

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

Про postgresql согласен. А вот

100к в день смешная нагрузка

Откуда такие выводы? Может каждый из этих 100к в секунду по запросу делает? Или по запросу в день?

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

Прочитал как 100к запросов. Так без конкретики, конечно, ничего нельзя сказать. Но в любом случае это хотелки автора, по достижению которых можно проапгрейдить сервер при необходимости.

Legioner ★★★★★
()

Настроить проксирование на Nginx дело 5 минут, так что запускай как есть, перевести на Nginx всегда успеешь

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

это самый авторитетный тест в нете. Все гуру со всего мира его делают. И ты думаешь, что они врут?

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

express по тестам на pm2 выдерживает запросов больше, чем java spring и asp.net core могу ссылку дать на тест, если не веришь

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

я понял, что лучше с nginx, буду прикручивать, но postgresql с express не буду. Если бы я писал на сыром node, то да, postgresql показывает больше производительность, чем mysql. Fastify тоже показывает больше, но именно express показывает лучше с mysql, я не знаю почему, я верю авторитетным гуру

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

для того, чтобы потратить часть своей драгоценной жизни на очередную новую айти технологию, я всегда задаю себе главный вопрос, ЗАЧЕМ? если ответа не нахожу, я не трачу на нее время

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

в любом современном фремворке есть защита от всяких инъекций. Тем более, все сейчас используют angular, react, vue

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

когда 100к в секунду делают, можно уже окружить себя худыми моделями 20 лет и плавать на яхте, около своего острова

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

у меня нет денег на апргрейды сервера, когда будет уже 50к в день, если когда-нибудь, дай бог, сразу перепишу на actix и оставлю на том же сервере, он выдержит всю землю, вместе с марсом. Ватсап на одном серваке выдерживал 450млн в день, правда на phoenix

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

спасибо, по ходу разберусь, мне интересно было мнение экспертов

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

Хз. Я по БД бенчмаркам не доверяю, неизвестно какая у них там выборка. Нужно тестировать на своем массиве данных. Лукавить, конечно, не буду - нет рабочего проекта на Express + PostgreSQL. MySQL по-сути быстрее может быть на простых операциях чтения (я так, в общем, без привязки к чему-либо), практически во всем остальном, особенно в сложных запросах - выигрывает PostgreSQL. И при этом еще и ресурсов меньше кушает.

Кстати, я там или проглядел или какой MySQL не указано?! Так-то разница может быть на определенных запросах, скажем в v8 и предыдущих. Что насчет MariaDB? её считать?!

Короче, не доверяю я что-то. Я бы обязательно на своем наборе данных и под свою структуру БД затестил, если бы такой выбор стоял.

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

techempower как раз все все тестирует, не просто хело ворлд, а загрузку множества данных из базы,отрисовку на рендер движке, json, на физическом сервере и в облаке, я им доверяю. Для postresql надо nestjs брать. fastify, они хорошо показывают, но опять тратить время на изучение, чтобы чуток быстрее писать на javascript. Лучше поглубже go и elixir освоить

ycoodr
() автор топика

LAMP и нечего мудрить , не мешай машине работать ))

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

Для postresql надо nestjs брать

Так у него под капотом express.

Я, вообще, честно говоря, не могу уловить как это связано? Почему они сравнивают «теплое» с «мягким»? Драйвер БД - это же отдельный модуль, какая разница, в данном случае, что там в качестве фреймворка web-приложения?!

At the most general level, connecting Nest to a database is simply a matter of loading an appropriate Node.js driver for the database, just as you would with Express or Fastify.

https://docs.nestjs.com/techniques/database

Продолжайте верить бенчмаркам от «гуру» :)

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

Обязательно ли использовать nginx с сайтом на node/express?

Обязательно ли оглядываться перед тем как нагнуться чтобы поднять выпавшее мыло?

deep-purple ★★★★★
()
Ответ на: комментарий от Stack77

Так у него под капотом express.

Там Fastify можно воткнуть

А насчёт бенчей в Techempower ты зря. Они вполне себе адекватные. Сравниваются разные задачи, везде приведены параметры железа, на котором тесты запускались, есть исходный код тестов. Это не такие тесты, где Васян цикл написал и время замерил.

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

А насчёт бенчей в Techempower ты зря

Я не понимаю как они получили такой результат!? Фреймворк можно принять за константу, т.к. он работает с уже готовыми данными, за работу с базой отвечает драйвер, который отдельный модуль. Драйвера БД - тоже константа, если тесты одинаковые (а они такими и должны быть). По итоговой оценке, какой-то будет быстрее, какой-то медленнее.

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

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

какой-то будет быстрее, какой-то медленнее

А ты как больше любишь? Кстати, я всему лору рассказал, что мы с тобой пара. Мне все завидуют, а один регистрант сказал, что у вас с ним тоже было в прошлом :(

Владимир

anonymous
()

Ну почему, можно апач поставить. Без сервера совсем стремно просто будет. Хоть как-то запросы отфильтруешь.

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

Напридумывал, конечно :D Я же не по этой вашей части. И врать не хорошо, еще и всему форуму. Ну ты даешь, дружище.

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

express по тестам на pm2 выдерживает запросов больше, чем java spring и asp.net core могу ссылку дать на тест

давай ссылку, чисто интересно посмотреть на результаты тестов и сами тесты

spring все-же фреймворк потяжеловеснее чем express (imho, не спец в java), а вот .net core вполне можно сравнить с express по концекпции.

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

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

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

ты даешь, дружище

Мы с тобой два лучших друга
в зад имеем мы друг друга
что ни сделаешь для друга
жить не можем друг без друга

Владимир

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