Подтвердить что ты не робот

Может ли Node.js полностью заменить такие решения, как Apache или NGINX?

О развертывании приложения Node.js, я видел много обучающих программ, демонстрирующих его развертывание бок о бок с Nginx, с более или менее симпатичными трюками, позволяющими работать 2 (и раздражающим вещам, например Nginx не поддерживает WebSockets). Мне это кажется немного сложнее...

Почему все делают такие настройки? Развертывание Nginx, когда у вас есть Node.js, дает какое-либо преимущество? Не можете ли вы обслуживать статические файлы с помощью Node.js?

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

4b9b3361

Ответ 1

Ну, некоторые люди не против использования Node вместо nginx. Некоторые облака, такие как dotCloud или Nodejistu, используют шлюзы, полностью написанные в Node.js. В основном, чтобы иметь возможность обрабатывать веб-узлы. Но также и потому, что Node.js быстро работает.

Вот шлюз dotCloud, который недавно был открыт https://github.com/dotcloud/hipache

Ответ 2

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

Имея такие доступные решения, нет необходимости повторно изобретать колесо. Может быть более выгодным реализовать балансировку нагрузки и маршрутизацию с помощью NGINX, а не открывать NodeJS снаружи и просто запускать ее на локальном хосте.

NodeJS не может считаться серверным программным обеспечением, а просто движком JavaScript плюс библиотеки/модули. Тот факт, что он сильно используется для сценариев сервера, не делает его веб-сервером.

Если вы решите пропустить вышеупомянутое и полностью переключиться на NodeJS, я предлагаю вам подумать о поддержании такого решения. Журналы, сценарии запуска и завершения работы и мониторинг могут сделать задачу более сложной, чем кажется.

Кроме того, многочисленные библиотеки, написанные для NodeJS, имеют тенденцию ломаться с новыми версиями, так как взломанные изменения вносятся NodeJS. Считайте это ценой отсутствия зрелости. Если вы рискуете и не боитесь проблем, идите в NodeJS.

Заключительное примечание: статические файлы можно обслуживать с помощью NodeJS. Ваши скрипты могут прочитать его и вытолкнуть.

Обновление. Если вы решили пойти на Node.js, подумайте об использовании среды Express.js.

Ответ 3

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

Кроме того, вы теряете немного производительности, когда вам нужно проксировать каждый отдельный запрос от Apache/NGINX до node.js. Намного проще позволить node обрабатывать запросы самостоятельно.