Показать сообщение отдельно
  #48 (permalink)  
Старый 12.10.2011, 21:56
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Я не использую фреймворки.
Я сделал так:
Перед нодой поставил 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 (обслуживает основной домен), далее делится на сервисы и, в зависимости от запроса, запускается тот или иной сервис.
Всё вроде логично, функционал разделён. Никаких велосипедов писать не пришлось.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием