Задать вопрос

Как работает веб-сервер и node js в связке? Зачем нужен Nginx?

Привет! Я только начал погружаться в мир бэкэнда, и иногда не совсем понимаю что и зачем нужно.
В общем, я решил сделать простую доску объявлений, у меня имеется два сервера на Node.Js, один отдает статику, другой - api который формирует запросы к базе. Но я не давно узнал о такой штуке как Nginx (ну и вообще о других веб-серверах). И теперь у меня возникла дилемма, я вообще запутался, и не понимаю как правильно, и что для чего нужно.
Как я понял, Nginx и Node Js могут работать в связке, но тогда кто за что отвечает, если маршрутизация выполняется с помощью React, все необходимые файлы отдает Node, запросы так же делает Node, для чего тогда вообще нужен веб-сервер на Nginx, и какую задачу он будет выполнять?
Зачем вообще нужен Nginx, Apache и т.п. если всю серверную часть можно организовать на node, или на любом другом языке и фреймворке?
  • Вопрос задан
  • 1763 просмотра
Подписаться 5 Простой Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Веб-разработка
Самое простое - nginx отдаёт статику. На больших объёмах делать это через Ноду неэффективно.
Посложнее - nginx позволяет управлять ходом запроса. Например, редиректить на https.
Ещё сложнее - можно настроить nginx, чтобы он умно балансировал запросы между несколькими бэкендами и автоматом блокировал слишком частые попытки подключения.

Nginx очень хорошо в промышленных масштабах делает определённую часть работы, связанной с http-запросом, поэтому ему эту часть работы и делегируют.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Я nginx юзаю по той причине, что на одном сервере крутятся несколько приложений, с его помощью удобно объединить их все "под одной крышей", не арендуя для каждого из них отдельный инстанс. В ситуации с дефицитом IPv4-адресов это как-то расточительно, а так - каждое приложение слушает отдельный порт, nginx слушает 80 и 443 и проксирует все запросы по имени домена на них.
Да и гораздо проще всю работу по обеспечению общения клиентов с сервером скинуть на nginx - не надо в каждом приложении отдельно делать логирование запросов, работу по получению и продлению SSL-сертификатов, можно сосредоточиться на решении конкретной проблемы.
Ответ написан
Комментировать
@darkshy
Самый простой ответ - зачем заново изобретать велосипед?
По факту, nodejs тоже не нужен, ведь можно все сделать на assembler
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы