基于访问域的Nodejs数据库配置

Nodejs Database configuration based on accessed domain

我有两个域 abc.comxyz.com 指向同一个 NodeJS 服务器。基于域,我想加载将为该域保留的配置,即对于 xyz.com 我想连接到 Database1,对于 abc.com 我想连接到 Database2

我该怎么做?是否有可能或建议这样做?

我首先通过从 req.hostname 获取主机名来加载第一个请求的配置。有没有更好的方法来做到这一点?

多种策略 -

1。多次部署相同的代码,但在不同的端口上。

您的反向代理将请求发送到正确的服务器。我目前通过在同一个 vps 上托管多个幽灵博客来做到这一点。一个在端口 3000 上运行,另一个在 3010 上运行。

优点 - 不那么脆弱的设置,更容易扩展,应用程序不需要知道操作环境。如果一个域受到攻击,另一个域不会自动成为受害者。

缺点 - 在资源受限的环境中可能无法实现。部署可能涉及重复性工作。

2。读取主机名

如果功能集几乎相同但只是域名发生了变化,这是一个很好的选择。您根据主机名按照您的说明读取配置文件。

优点 - 更容易部署,是资源受限环境的绝佳选择。

缺点 - 不必要的紧密耦合,如果服务器出错,所有域都将变得不可用,缩放可能是个问题。

就个人而言,我更喜欢在不同的端口上部署,除非并且直到代码需要取决于主机名。如果您只是构建一个产品,其中需要在 URL 中出现一些唯一标识符,例如 mycompany.slack.com,那么在 dns 中使用子域可能是一个更好的主意。