首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过nodejs,njs脚本语言扩展nginx

通过nodejs,njs脚本语言扩展nginx
EN

Stack Overflow用户
提问于 2020-09-15 08:13:24
回答 1查看 632关注 0票数 1

我在nginx文档上找到了一个可以使用的部分

ECMAScript 5.1 (严格模式),带有一些ECMAScript 6和更高版本的扩展

以扩展nginx。作为用例

在请求到达上游服务器之前,njs中的复杂访问控制和安全检查

https://nginx.org/en/docs/njs/

不,我想知道我是否能够连接到数据库,并做一些类似于node.js的事情。甚至在nginx进程中“运行”节点。但是我想我有坏卡,因为目前只有两个模块,它们不提供网络套接字、这样的功能,有一节“使用njs的节点模块”:modules.html

这只与外星库或与“节点内部”如网,dgram等?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-01 23:33:17

njs是Javascript的一个子集,目前没有任何直接与外部进程接口的方法,但是可以向本地路由发出子请求,而后者又可以代理其他服务。我在研究类似的要求时偶然发现了你的问题,并在这里发表了一个简单的例子:

离解决方案最近的一件事实际上就是在数据库连接周围创建一个薄包装器,并将其部署为独立的web服务,然后建立一条内部路由来反向代理连接:

代码语言:javascript
复制
location /internal-service {
    internal;
    proxy_pass http://<hostname>:<port>;
}

然后,您的njs脚本可以通过调用:

代码语言:javascript
复制
response.subrequest(
    '/internal-service', 
    {
        method: 'GET',
    },
    serviceResponse => {
        // some logic... 
        response.return(200)
    }
)

也许还有其他的解决办法,但目前这种方法似乎是最有力的。不幸的是,这确实使开发自成体系的模块变得困难--我怀疑这是没有任何可重用包的原因之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63897731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档