Несколько доменов, приложение с одним узлом (экспресс)

Я пытаюсь создать простое приложение узла, где пользователь может создать профиль. По умолчанию URL-адрес его профиля должен быть таким: user1.myappname.com, но когда пользователь заполняет ввод личного домена (и указывает этот домен на IP-адрес моего приложения), он должен иметь возможность использовать этот личный домен, например:

usercustomdomain.com => user1.myappname.com usercustomdomain.com/someaction => user1.myappname.com/someaction

Есть ли у кого-нибудь здесь опыт реализации этого с помощью express.js? Я имею в виду не только пользовательские домены, но и поддомены.

Спасибо-М


person Martin Šnajdr    schedule 03.02.2012    source источник


Ответы (1)


Поскольку ваши пути одинаковы независимо от домена, это просто. Возьмите имя хоста из запроса, переданного в ваши методы экспресс-маршрута, а затем выполните любой поиск, который вам нужен. Node не заботится о домене, и пока ваш домен имеет CNAME для ваших субдоменов, а пользовательские домены указывают на тот же IP-адрес, что и myappname.com, узел будет отвечать на все запросы одинаково.

Например, в вашем маршруте /someaction:

app.get('/someaction', function(req,res) {
    hostName = req.header('host');
    // lookup info from database based on hostName, then output it ....
});
person Billy Cravens    schedule 03.02.2012
comment
Я хотел бы отметить, что файлы cookie не будут проходить через домен (разрешить доступ субдоменов к файлам cookie из основного домена), если вы не установите путь, чтобы это произошло. Это можно сделать легко, но вы должны быть в состоянии доверять поддоменам, потому что они могут прочитать/украсть информацию о файлах cookie/сеансах и захватить ее. - person japrescott; 03.02.2012
comment
@japrescott Что, если администрация каждого пользователя будет находиться на www.myappname.com/admin? Возможно, это решит проблему с куки, потому что они не будут конфликтовать с поддоменами или пользовательскими доменами... - person Martin Šnajdr; 03.02.2012
comment
@MartinSnajdr, это не проблема сама по себе. Но если у вас есть другой веб-сайт по адресу someother.myappname.com и вы не хотите, чтобы пользователю нужно было снова входить в систему, вам нужно будет доверять этому другому поддомену. - person japrescott; 04.02.2012