Я не использую фреймворки.
Я сделал так:
Перед нодой поставил nginx. Конфиг:
Код:
|
// Запросы на неизвестные поддомены отправляем на сервер 404
server {
listen 80;
server_name *.amxhost.ru;
location / {
proxy_pass http://amxhost.ru:8000/;
proxy_set_header Host $host;
proxy_set_header Error 404;
}
}
// Основной домен
server {
listen 80;
server_name amxhost.ru www.amxhost.ru;
location / {
proxy_pass http://amxhost.ru:8001;
proxy_set_header Host $host;
}
}
// Поддомен
server {
listen 80;
server_name ajax.amxhost.ru www.ajax.amxhost.ru;
location / {
proxy_pass http://amxhost.ru:8002;
proxy_set_header Host $host;
}
} |
Т.е. на ноде мы создаем несколько серверов на разных портах:
var CONFIG = require('config');
var SERVERS_PATH = module.filename.replace(/(.*)\/.*$/, '$1/servers');
var LIB = {
http: require('http'),
fileSystem: require('fs')
};
// Create servers
LIB.fileSystem.readdir(SERVERS_PATH, function(err, files) {
if (err) {
console.log(err);
} else {
var length = files.length;
while (length--) {
var serverData = files[length].match(/^([^\.]+).js$/);
if (serverData) {
var server = module.exports[serverData[1]] = require(SERVERS_PATH + '/' + serverData[0]);
LIB.http.createServer(server).listen(server.port, CONFIG.host);
}
}
}
});
Это модуль создания серверов. Рядом в папке servers лежат их реализации:
module.exports = function(request, response) {
};
module.exports.port = 8001;
Например, реализация сервера www (обслуживает основной домен), далее делится на сервисы и, в зависимости от запроса, запускается тот или иной сервис.
Всё вроде логично, функционал разделён. Никаких велосипедов писать не пришлось.