Как разрешить клиентам доступ к SaaS с использованием имени своей организации в домене?Как сделать субдомены типа клиента/клиента с помощью узла и экспресс-памяти
Например, веб-приложение example.com может иметь 2 клиентов, 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 с использованием заголовка узла.
An Apache/Rails пример @http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails
Как можно же быть достигнуто в узле?
Вы можете написать промежуточное программное обеспечение, который смотрит на заголовок узла, получает все данные, он нужен для этого конкретного хоста и добавляет объект req для использования в маршрутах/промежуточном программном обеспечении. –
Я думаю, что бит - это то, что у меня уже есть (хотя оно еще не перешло в промежуточное ПО). Я заблокирован/неясно, как настроить сервер для catch * .example.com. Я думаю, что прокси-сервер может потребоваться (https://github.com/nodejitsu/node-http-proxy), но мне нужно узнать больше, прежде чем пытаться его понять. Мне также нужно решение, позволяющее мне развиваться локально (на OSX). – mattgi