多租户应用程序的多级子域

Multi level sub Domains for a Multi-tenant Application

我正在做的一个项目曾经是一个内部 Intranet 应用程序,但现在它正在被移植到一个多租户 Internet 应用程序。通常,在部署任何 Web 应用程序时,我们会使用 http://webapp.company.com 这种格式,这种格式在我加入之前就已经存在了很长时间。 由于该项目现在是一个多租户应用程序,我正在尝试在不同的体系结构之间做出决定。

1) 使用client/tenant作为主机的一部分url

http://tenant.webapp.company.com

此方法需要额外的 ssl 证书和 iis 设置

2) 将租户作为路由的一部分,租户名称将作为路由参数包含在内

http://webapp.company.com/{tenant}/my/route/url/{param}

我认为这种方法是'messy',我觉得这不是最正确的解决方案。

3) 保留 http://webapp.company.com 的现有 url 并在 IIS 中添加特定绑定以将请求的 url 指向主机位置。

当用户输入 url http://tenant.company.com 时,他们将获得驻留在 http://webapp.company.com 的应用程序的服务。这种方法的问题是我们可能会部署其他应用程序,而这不是可扩展。

我倾向于方法 1,因为我有实施它的经验(没有额外的域)。 4级域名是否理想?关于哪种方法比另一种更好的任何想法?可能是一种新方法?欢迎任何意见。

Using the client/tenant as part of the main host url

http://tenant.webapp.company.com

This approach requires additional ssl certificates and iis settings

实际上,您可以为 *.webapp.company.com 使用 wildcard certificate,这意味着您可以扩展此方案而无需额外的 IIS 配置。

此外,这种方法在路由方面是最优雅的。 GitHub 上什至还有一个 MVC-Subdomain-Routing 项目,您可以将其用于某些方向(或者如果项目满足您的要求,则原样使用)。

另请参阅 this question and 了解一些其他方法。