Node.js – 每个用户的子域名+允许自定义域名

使用Node.js / Express我有一个REST API与多个同构/通用应用程序使用这个API。

我希望允许用户拥有自己的子域名,并在注册时dynamic发生。

从我所研究的最好的方式来做到这一点是指向同构/通用应用程序服务器的通配符logging,并有一些逻辑解释请求查找子域,并提供适当的页面。 这我假设需要坐在应用程序的前面,并发生每个请求到服务器。

这是解决这个问题的最好方法吗? 有其他的方法吗?

是否会有可扩展性的潜在问题?

然后我想让用户有一个自定义的域名。 Tumblr和其他服务提供了类似的function,允许您将CNAMElogging指向用户子域。 我一直无法find关于如何工作的很多信息。

允许用户在应用程序中使用自定义域名的最佳方式是什么?

这是解决这个问题的最好方法吗? 有其他的方法吗?

是否会有可扩展性的潜在问题?

你用通配符DNS描述的是最好的方法,你不会遇到任何由此引起的可伸缩性问题。 另一种方法是使用具有API的DNS主机(如Route 53),并为每个用户dynamic添加一个子域。 虽然这比通配符有几个缺点。 维护可能会很痛苦,新的DNSlogging可能需要一段时间才能传播,并且您可能会很快达到限制(在Route 53上,您需要增加限额以超过每个AWS账户500个托pipe区域)。

允许用户在应用程序中使用自定义域名的最佳方式是什么?

你有相同的方式来检查子域(检查HTTP主机头)。 当一个请求到来时,你可以检查主机头,并确定该域是属于哪个用户(无论是子域还是完整的自定义域)。 只要他们告诉你他们的域名是什么。 添加CNAME是他们的责任(尽pipe你可以给他们指导,显然)。

如果您支持HTTPS,则只能在支持SNI的设备上执行该操作。 您可以获得子域名的通配符证书,但是您需要域名所有者上传PEM文件或获得他们的许可,并使用允许encryption的api和webroot域validation检查。