Как создать поддомены в стиле «клиент / клиент» с помощью Node и Express

Как можно разрешить клиентам доступ к SaaS, используя имя своей организации в домене?

Например, веб-приложение example.com может иметь двух клиентов, OrgA и OrbB.

После входа в систему каждый клиент перенаправляется на свой сайт orga.example.com / orgb.example.com.

Как только запрос, включающий поддомен, достигнет сервера узла, я надеюсь обработать запрос с помощью одного маршрута '/'. Внутри обработчика маршрута он просто проверяет заголовок хоста и рассматривает поддомен как параметр для организации. Что-то вроде:

app.get "/*", app.restricted, (req, res) ->
  console.log "/* hit with #{req.url} from #{req.headers.host}"
  domains = req.headers.host.split "."
  if domains
    org = domains[0]
    console.log org
    # TODO. do something with the org name (e.g. load specific org preferences)
  res.render "app/index", { layout: "app/app" }

NB. Первым элементом в массиве доменов является название организации. Я предполагаю, что порт не отображается в заголовке хоста, и на данный момент я не рассматриваю, как обрабатывать имена субдоменов, не относящиеся к организации (например, www, blog и т. Д.).

Вопрос, который у меня возникает, больше касается того, как можно настроить node / express для обработки запросов с различными заголовками хоста. Обычно это решается в Apache с использованием псевдонима с подстановочными знаками или в IIS с использованием заголовка хоста.

Пример Apache / Rails: @ http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails

Как может быть то же самое? достигнуто в узле?

13
задан mattgi 14 January 2012 в 04:33
поделиться