【问题标题】:Node.js - subdomain per user + allowing custom domainNode.js - 每个用户的子域 + 允许自定义域
【发布时间】:2016-04-06 02:10:53
【问题描述】:

使用 Node.js/Express 我有一个 REST API,其中包含多个使用此 API 的同构/通用应用程序。

我希望允许用户拥有自己的子域,并且这会在他们注册时动态发生。

根据我的研究,最好的方法是将通配符记录指向同构/通用应用程序服务器,并在那里有一些逻辑来解释寻找子域的请求并提供适当的页面。我假设这需要位于应用程序的前面,并且发生在对服务器的每个请求中。

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

可扩展性是否存在任何潜在问题?

然后我想允许用户拥有一个自定义域。 Tumblr 和其他服务提供了类似的功能,它们允许您将 CNAME 记录指向用户子域。我一直无法找到有关其工作原理的太多信息。

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

【问题讨论】:

    标签: node.js express dns subdomain


    【解决方案1】:

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

    可扩展性是否存在任何潜在问题?

    您使用通配符 DNS 描述的是最好的方法,您不会遇到由此导致的任何可扩展性问题。另一种方法是使用具有 API 的 DNS 主机,例如 Route 53,并为每个用户动态添加一个子域。不过,与通配符相比,这有几个缺点。维护起来可能会很麻烦,新的 DNS 记录可能需要一段时间才能传播,而且您可能会很快达到限制(在 Route 53 上,您需要请求将限制提高到每个 AWS 账户超过 500 个托管区域)。

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

    与检查子域的逻辑相同(检查 HTTP 主机标头)。当请求进来时,您可以检查 Host 标头并确定该域属于哪个用户(是子域还是完整的自定义域);只要他们告诉您他们的域是什么。添加 CNAME 是他们的责任(当然您可以为他们提供指导)。

    如果您支持 HTTPS,您将只能在支持 SNI 的设备上执行此操作。您可以获得子域的通配符证书,但您需要域所有者上传 PEM 文件或获得他们的许可,然后使用 Lets Encrypt 的 api 和 webroot 域验证检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2017-05-14
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多