Я б использовал перед nodejs nginx.
Слушаем домены и все его поддомены и передаём в ноду заголовок дополнительный
server {
listen *:80;
server_name domian.com *.domian.com;
set $subdomain "";
if ($host ~ ^(.*)\.domian\.com$) {
set $subdomain $1;
}
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Subdomain $subdomain;
}
}
var express = require('express');
var app = express();
app.get('/', function(req, res) {
// здесь что-то делаем с этим заголовком
res.end('Subdomain: ' + req.headers['x-subdomain']);
});
app.listen(3000);