基于访问域的Nodejs数据库配置
Nodejs Database configuration based on accessed domain
我有两个域 abc.com
和 xyz.com
指向同一个 NodeJS 服务器。基于域,我想加载将为该域保留的配置,即对于 xyz.com
我想连接到 Database1
,对于 abc.com
我想连接到 Database2
。
我该怎么做?是否有可能或建议这样做?
我首先通过从 req.hostname
获取主机名来加载第一个请求的配置。有没有更好的方法来做到这一点?
多种策略 -
1。多次部署相同的代码,但在不同的端口上。
您的反向代理将请求发送到正确的服务器。我目前通过在同一个 vps 上托管多个幽灵博客来做到这一点。一个在端口 3000 上运行,另一个在 3010 上运行。
优点 - 不那么脆弱的设置,更容易扩展,应用程序不需要知道操作环境。如果一个域受到攻击,另一个域不会自动成为受害者。
缺点 - 在资源受限的环境中可能无法实现。部署可能涉及重复性工作。
2。读取主机名
如果功能集几乎相同但只是域名发生了变化,这是一个很好的选择。您根据主机名按照您的说明读取配置文件。
优点 - 更容易部署,是资源受限环境的绝佳选择。
缺点 - 不必要的紧密耦合,如果服务器出错,所有域都将变得不可用,缩放可能是个问题。
就个人而言,我更喜欢在不同的端口上部署,除非并且直到代码需要取决于主机名。如果您只是构建一个产品,其中需要在 URL 中出现一些唯一标识符,例如 mycompany.slack.com
,那么在 dns 中使用子域可能是一个更好的主意。
我有两个域 abc.com
和 xyz.com
指向同一个 NodeJS 服务器。基于域,我想加载将为该域保留的配置,即对于 xyz.com
我想连接到 Database1
,对于 abc.com
我想连接到 Database2
。
我该怎么做?是否有可能或建议这样做?
我首先通过从 req.hostname
获取主机名来加载第一个请求的配置。有没有更好的方法来做到这一点?
多种策略 -
1。多次部署相同的代码,但在不同的端口上。
您的反向代理将请求发送到正确的服务器。我目前通过在同一个 vps 上托管多个幽灵博客来做到这一点。一个在端口 3000 上运行,另一个在 3010 上运行。
优点 - 不那么脆弱的设置,更容易扩展,应用程序不需要知道操作环境。如果一个域受到攻击,另一个域不会自动成为受害者。
缺点 - 在资源受限的环境中可能无法实现。部署可能涉及重复性工作。
2。读取主机名
如果功能集几乎相同但只是域名发生了变化,这是一个很好的选择。您根据主机名按照您的说明读取配置文件。
优点 - 更容易部署,是资源受限环境的绝佳选择。
缺点 - 不必要的紧密耦合,如果服务器出错,所有域都将变得不可用,缩放可能是个问题。
就个人而言,我更喜欢在不同的端口上部署,除非并且直到代码需要取决于主机名。如果您只是构建一个产品,其中需要在 URL 中出现一些唯一标识符,例如 mycompany.slack.com
,那么在 dns 中使用子域可能是一个更好的主意。