Для SaaS, работающего на Node.JS, нужен ли веб-сервер (nginx) или лак в качестве обратного прокси? - PullRequest
1 голос
/ 20 июля 2011

Для SaaS, работающего на Node.JS, нужен ли веб-сервер?

Если да, то какой и почему?

Каковы недостатки использования только узла?Его роль заключается в том, чтобы просто обрабатывать запросы CRUD и возвращать JSON клиенту для анализа даты (как в Gmail).

1 Ответ

5 голосов
/ 20 июля 2011

"нужен ли веб-сервер"?

Технически, нет.Практически, да, обычно используется отдельный веб-сервер, и на то есть веские причины.

В в этом выступлении Райана Даля в мае 2010 года , в 37:30 "он заявляет, что рекомендует запустить узел.js за обратным прокси-сервером или веб-сервером по «соображениям безопасности». Чтобы уточнить это, защищенные веб-серверы, такие как nginx или apache, имеют свои стеки TCP в течение длительного времени с точки зрения стабильности и безопасности.на том же уровне. Таким образом, поскольку размещение node.js за nginx легко, не имеет многих негативных последствий и теоретически несколько повышает безопасность вашего развертывания, это хороший выбор. В какой-то момент времени node.jsможет считаться официально «готовым к прямому прямому интернет-подключению», но подождите, пока Райан / Джойент сделает какое-то объявление об этом.

Во-вторых, для привязки к портам до 1024 (например, 80 и 443) требуется, чтобы процессбыть root. nginx и другие автоматически обрабатывают привязку как root и затем сбрасывают привилегии в более безопасную учетную запись пользователя (www-data или никто как правило).Хотя в node.js есть модуль системных вызовов в модуле process для удаления привилегий суперпользователя с setgid и setuid, AFAIK, кроме кодирования этого самостоятельно, сообществом узлов еще не видел соглашения для этого.Подробнее по этой теме в этом обсуждении .

В-третьих, веб-серверы хороши в виртуальном хостинге, и в целом есть удобные вещи, которые вы можете сделать (перезапись URL и т. Д.), Требующие пользовательского кодирования вnode.js для достижения других целей.

В-четвертых, nginx отлично подходит для обслуживания статических файлов.Лучше, чем node.js (по крайней мере, на данный момент).Опять же, с течением времени этот момент может становиться все менее и менее актуальным, но, на мой взгляд, традиционный статический файловый веб-сервер и сервер веб-приложений по-прежнему имеют разные роли и цели.

"Если да, то какой и почему"?

nginx .Потому что он имеет отличную производительность и проще в настройке, чем apache.

...