"нужен ли веб-сервер"?
Технически, нет.Практически, да, обычно используется отдельный веб-сервер, и на то есть веские причины.
В в этом выступлении Райана Даля в мае 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.