Ответ 1
В теории вы могли бы создать веб-сервер pure- Node, который эмулировал функциональность Apache/Lighttpd/Nginx, но я бы не рекомендовал его. На самом деле, для серьезных услуг по производству, я бы рекомендовал ALWAYS работать с Nginx или эквивалентом (см. this и this).
Здесь, как простой Nginx config будет работать для двух подсервисов, открытых на порту 80.
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type text/html;
server {
listen 80;
server_name service1.mydomain.com
location / {
proxy_pass http://127.0.0.1:3000/;
}
}
server {
listen 80;
server_name service2.mydomain.com
location / {
proxy_pass http://127.0.0.1:3001/;
}
}
}
Я видел патчи ядра ядра, потому что Node не дросселирует нагрузку по умолчанию и приоритизирует прием новых подключений по обработке существующих запросов - предоставляется, "не должно" разбивать ядро, но это произошло. Кроме того, работая на порту 3000, вы можете запустить службу Node как не-root с очень небольшим количеством разрешений (и по-прежнему прокси-сервер так, чтобы она отображалась на порту 80). Вы также можете распространять нагрузку между несколькими работниками, обслуживать статику, запросы журналов, переписывать URL-адреса и т.д. И т.д. И т.д. Nginx очень быстр (намного легче, чем Apache). Накладные расходы на пересылку прокси-сервера такого же размера минимальны и покупают у вас столько функциональности и надежности, что это захлопывание в моей книге. Даже незначительные вещи, например - когда я разбиваю или перегружаю мой сервис Node, пользователь получает черную дыру или всплывает "pardon our dust, наши серверы".