Если необходимо запускать на сервере сразу несколько веб приложений, то это можно делать при помощи прокси сервера Varnish. Таким образом можно хостить множество приложений NodeJS, а также Apache, Tomcat и прочее. Схема работы проста — Varnish устанавливается на порт 80, приложения NodeJS (Apache, Nginx) на другие свободные порты. Когда поступает запрос на порт 80, Varnish по имени хоста определяет какому именно приложению оно предназначается и передает запрос туда.
Теперь подробнее и по порядку (перечисленные ниже инструкции я опробовал на своем Ubuntu сервере, для других дистрибутивов или OS процедура может отличаться).
Устанавливаем Varnish
Выполняем команду:
sudo apt-get install varnish
После того, как Varnish установится, редактируем файл /etc/default/varnish, указываем порт 80 в DAEMON_OPTIONS (после параметра -a):
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Настраиваем прокси на web приложения
Откройте VCL файл /etc/varnish/default.vcl и добавьте туда конфигурацию backend:
backend apache {
.host = "127.0.0.1";
.port = "8001";
}
backend example_nodejs {
.host = "127.0.0.1";
.port = "3000";
}
backend jenkins {
.host = "127.0.0.1";
.port = "8080";
}
Здесь я указал 3 backend-а и назначил им понятные мне названия. Далее указываем маршруты при помощи параметра sub vcl_recv:
sub vcl_recv {
if(req.http.host == "example.com" || req.http.host == "www.example.com") {
set req.backend = apache;
}
if(req.http.host == "nodejs.example.com" || req.http.host == "www.nodejs.example.com") {
set req.backend = example_nodejs;
}
if(req.http.host == "ci.example.com" || req.http.host == "www.ci.example.com") {
set req.backend = jenkins;
}
}
Маршруты указывают куда необходимо отправлять запросы в зависимости от имени хоста. В моем примере, хост nodejs.example.com будет передаваться в backend example_nodejs, т.е. приложение, работающее на 127.0.0.1:3000.
Далее перезапускаем Varnish:
sudo service varnish restart
После этого все должно работать.
Если вам нужно запустить множество приложений NodeJS, можно использовать forever, либо через Upstart скрипт (актуально для Ubuntu). Инструкцию для запуска NodeJS приложений через Upstart можно найти здесь (англ.).
Источник — How to run Apache and NodeJS based sites on the same server with Varnish.