Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs';作为mongo文档索引的req.hostname。坏习惯?_Node.js_Express_Nginx - Fatal编程技术网

Node.js nodejs';作为mongo文档索引的req.hostname。坏习惯?

Node.js nodejs';作为mongo文档索引的req.hostname。坏习惯?,node.js,express,nginx,Node.js,Express,Nginx,我正在构建一个nodejs应用程序,我想让我的客户在各种设置下都可以使用。我想让我的客户在我的应用程序上建立他们的网站,因此:-该应用程序可以配置为域“a.com”和“B.com”使用应用程序的配置“X”,而“C.com”使用“Y”,等等。-我正在考虑使用kubernetes和dockers容器来隔离版本“X”、“Y”等我的应用程序-我也在考虑使用nginx的反向代理 每个域在mongodb集合中都有其不同的文档。因为我需要一种方法来检索正确的数据,所以我给每个域一个唯一的令牌来匹配它们的文档。

我正在构建一个nodejs应用程序,我想让我的客户在各种设置下都可以使用。我想让我的客户在我的应用程序上建立他们的网站,因此:-该应用程序可以配置为域“a.com”和“B.com”使用应用程序的配置“X”,而“C.com”使用“Y”,等等。-我正在考虑使用kubernetes和dockers容器来隔离版本“X”、“Y”等我的应用程序-我也在考虑使用nginx的反向代理

每个域在mongodb集合中都有其不同的文档。因为我需要一种方法来检索正确的数据,所以我给每个域一个唯一的令牌来匹配它们的文档。所有令牌也保存在mongodb中,并将在my(nodejs)服务器启动时检索或动态更新。令牌将保存在一个“app.locals”变量中:-我正在考虑使用一个中间件,该中间件将从每个请求(req.hostname)中绘制域并获取相应的令牌

// set locals
app.locals.domainTokens = {};
在检索和分配令牌之后,“domainTokens”将如下所示:

app.locals.domainToken = {
    "Acom" : "token_1",
    "Bcom" " "token_2"   // and so on
}

// the middleware
function grabToken(req, res, next) {
    var tokens = app.locals.domainToken,
        host = req.hostname;
    req.params.token = host ? tokens[host] : undefined;
    next();
}
当新客户注册时,代币将被动态地分配给他们的域(容器会互相交谈,对吗?)

因此,基本上,当请求“a.com”时,我的中间件会设置“令牌”,以便可以找到与“a.com”相关的mongodb文档,并将其发送回运行我的应用程序(nginx)版本“X”的客户端

你认为这种方法怎么样?它不安全吗?坏习惯?你有更好的建议来实施它吗?每个域使用一个容器是否更好?(我必须监视数百个nodejs实例,而不是3或4个)

另外,是否可以动态配置Nginx服务器