我在nginx文档上找到了一个可以使用的部分
ECMAScript 5.1 (严格模式),带有一些ECMAScript 6和更高版本的扩展
以扩展nginx。作为用例
在请求到达上游服务器之前,njs中的复杂访问控制和安全检查
https://nginx.org/en/docs/njs/
不,我想知道我是否能够连接到数据库,并做一些类似于node.js的事情。甚至在nginx进程中“运行”节点。但是我想我有坏卡,因为目前只有两个模块,它们不提供网络套接字、和这样的功能,有一节“使用njs的节点模块”:modules.html。
这只与外星库或与“节点内部”如网,dgram等?
发布于 2021-04-01 23:33:17
njs是Javascript的一个子集,目前没有任何直接与外部进程接口的方法,但是可以向本地路由发出子请求,而后者又可以代理其他服务。我在研究类似的要求时偶然发现了你的问题,并在这里发表了一个简单的例子:
离解决方案最近的一件事实际上就是在数据库连接周围创建一个薄包装器,并将其部署为独立的web服务,然后建立一条内部路由来反向代理连接:
location /internal-service {
internal;
proxy_pass http://<hostname>:<port>;
}然后,您的njs脚本可以通过调用:
response.subrequest(
'/internal-service',
{
method: 'GET',
},
serviceResponse => {
// some logic...
response.return(200)
}
)也许还有其他的解决办法,但目前这种方法似乎是最有力的。不幸的是,这确实使开发自成体系的模块变得困难--我怀疑这是没有任何可重用包的原因之一。
https://stackoverflow.com/questions/63897731
复制相似问题