Node.js - 每个用户的子域 + 允许自定义域
Node.js - subdomain per user + allowing custom domain
使用 Node.js/Express 我有一个 REST API 有多个 isomorphic/universal 应用程序使用这个 API.
我想允许用户拥有自己的子域,并且这会在他们注册时动态发生。
根据我的研究,最好的方法是将通配符记录指向 isomorphic/universal 应用程序服务器,并在其中设置一些逻辑来解释寻找子域的请求并提供适当的页面.我假设这需要坐在应用程序前面,并且发生在对服务器的每个请求中。
这是解决这个问题的最佳方法吗?有其他方法吗?
可扩展性是否会存在任何潜在问题?
然后我想允许用户拥有自定义域。 Tumblr 和其他服务提供了类似的功能,它们允许您将 CNAME 记录指向用户子域。我一直无法找到有关其工作原理的大量信息。
允许用户在应用程序中为其区域使用自定义域的最佳方法是什么?
Would this be the best way to approach this problem? Is there an alternative way?
Are there going to be any potential issues with scalability?
您描述的通配符 DNS 是最好的方法,您不会遇到由此引起的任何可扩展性问题。另一种方法是使用具有 API 的 DNS 主机,例如 Route 53,并为每个用户动态添加一个子域。不过,与通配符相比,这有几个缺点。维护起来可能会很痛苦,传播新的 DNS 记录可能需要一段时间,并且您可能很快就会达到限制(在 Route 53 上,您需要请求增加限制以超过每个 AWS 账户 500 个托管区域)。
What is the best way to allow users to use a custom domain for their area within an application?
与检查子域的逻辑相同(检查 HTTP 主机 header)。当请求进来时,您可以检查主机 header 并确定该域属于哪个用户(无论是子域还是完整的自定义域);只要他们告诉您他们的域是什么。添加 CNAME 是他们的责任(尽管您显然可以给他们指导)。
如果您支持 HTTPS,则只能在支持 SNI 的设备上执行此操作。您可以获得子域的通配符证书,但您需要域所有者上传 PEM 文件或获得他们的许可并使用类似 Lets Encrypt 的 api 和 webroot 域验证检查。
使用 Node.js/Express 我有一个 REST API 有多个 isomorphic/universal 应用程序使用这个 API.
我想允许用户拥有自己的子域,并且这会在他们注册时动态发生。
根据我的研究,最好的方法是将通配符记录指向 isomorphic/universal 应用程序服务器,并在其中设置一些逻辑来解释寻找子域的请求并提供适当的页面.我假设这需要坐在应用程序前面,并且发生在对服务器的每个请求中。
这是解决这个问题的最佳方法吗?有其他方法吗?
可扩展性是否会存在任何潜在问题?
然后我想允许用户拥有自定义域。 Tumblr 和其他服务提供了类似的功能,它们允许您将 CNAME 记录指向用户子域。我一直无法找到有关其工作原理的大量信息。
允许用户在应用程序中为其区域使用自定义域的最佳方法是什么?
Would this be the best way to approach this problem? Is there an alternative way?
Are there going to be any potential issues with scalability?
您描述的通配符 DNS 是最好的方法,您不会遇到由此引起的任何可扩展性问题。另一种方法是使用具有 API 的 DNS 主机,例如 Route 53,并为每个用户动态添加一个子域。不过,与通配符相比,这有几个缺点。维护起来可能会很痛苦,传播新的 DNS 记录可能需要一段时间,并且您可能很快就会达到限制(在 Route 53 上,您需要请求增加限制以超过每个 AWS 账户 500 个托管区域)。
What is the best way to allow users to use a custom domain for their area within an application?
与检查子域的逻辑相同(检查 HTTP 主机 header)。当请求进来时,您可以检查主机 header 并确定该域属于哪个用户(无论是子域还是完整的自定义域);只要他们告诉您他们的域是什么。添加 CNAME 是他们的责任(尽管您显然可以给他们指导)。
如果您支持 HTTPS,则只能在支持 SNI 的设备上执行此操作。您可以获得子域的通配符证书,但您需要域所有者上传 PEM 文件或获得他们的许可并使用类似 Lets Encrypt 的 api 和 webroot 域验证检查。