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

Привет! Я только начал погружаться в мир бэкэнда, и иногда не совсем понимаю что и зачем нужно.
В общем, я решил сделать простую доску объявлений, у меня имеется два сервера на Node.Js, один отдает статику, другой - api который формирует запросы к базе. Но я не давно узнал о такой штуке как Nginx (ну и вообще о других веб-серверах). И теперь у меня возникла дилемма, я вообще запутался, и не понимаю как правильно, и что для чего нужно.
Как я понял, Nginx и Node Js могут работать в связке, но тогда кто за что отвечает, если маршрутизация выполняется с помощью React, все необходимые файлы отдает Node, запросы так же делает Node, для чего тогда вообще нужен веб-сервер на Nginx, и какую задачу он будет выполнять?
Зачем вообще нужен Nginx, Apache и т.п. если всю серверную часть можно организовать на node, или на любом другом языке и фреймворке?
  • Вопрос задан
  • 1491 просмотр
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы