снижение производительности
Наоборот. Если все, что вы делаете с узлом, является прокси, перегрузка незначительна (по сравнению с Apache). У меня есть настройки, аналогичные вашей (небольшая виртуальная машина, 3 устаревших веб-сайта Apache, проксирование и расширение node.js). До сих пор apache является источником ресурсов, а не приложениями моего узла, которые, тем не менее, прокси / фильтруют / перехватывают каждый входящий http-запрос
Вот мои настройки:
главный прокси
, который обрабатывает все входящие запросы (для любого количества доменов): я лично использую http-proxy nodejitsu, который очень надежен и прост в настройке
var http = require('http');
var httpProxy = require('http-proxy');
var options = {
hostnameOnly: true,
router: {
'domain1.com': '127.0.0.1:8081',
'www.domain1.com': '127.0.0.1:8081',
'subdomain1.domain1.com': '127.0.0.1:8082',
(...)
'domain2.com': '127.0.0.1:8090',
(...)
}
}
var mainProxy = httpProxy.createServer(options);
mainProxy.listen(8080);
Вы можете перенаправить на apache напрямую из объекта option или выполнить еще один разбор URL-адреса в другом (промежуточном) приложении узла на другом порту.
ПРЕДУПРЕЖДЕНИЕ : если вы не хотите устанавливать / запускать узел как «root» (что я настоятельно рекомендую в производственной среде): перенаправьте порт 80 на другой порт с помощью директивы IPTABLE (скажем, 8080), где работает этот прокси (см. здесь подробный пример директив Iptable ). Мой, на сжатии Debian, читает:
#REDIRECT port 80 to 8080
$IPTABLES -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
узел приложений
, которые выполняют парсинг URL с помощью регулярных выражений, или что вам нужно. Пример: перенаправление на несколько (устаревших) серверов Apache, которые (в моем случае) обслуживают только устаревший контент, еще не обслуживаемый приложениями узла «в разработке».
Daemonisation
Есть несколько решений, чтобы заставить узел работать как демон. Мои любимые два:
- nodemon будет отслеживать все файлы в папке и подпапке приложения вашего узла на предмет изменений и перезапускать приложение узла при изменении файла. Идеально подходит для среды разработки
- forever (еще раз по Nodejitsu) перезапустит приложение вашего узла, если оно когда-либо остановится. Это очень настраиваемый.
Также:
- сценарий init.d : я написал этот сценарий debian init.d для своих собственных серверов (должен работать в Ubuntu)