如何允许客户在域中使用其组织名称访问 SaaS?
例如,一个 Web 应用程序 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" }
注意。域数组中的第一项是组织名称。我假设主机标头中没有出现任何端口,目前我不考虑如何处理非组织子域名(例如 www、blog 等)。
因此,我的问题更多是关于如何配置 node/express 来处理具有不同主机头的请求。这通常在 Apache 中使用通配符别名或在 IIS 中使用主机头来解决。
一个 Apache/Rails 示例是 @ http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails
如何在节点中实现相同的功能?