我找到了您可以使用的 nginx 文档部分
ECMAScript 5.1(严格模式)以及一些 ECMAScript 6 和更高版本的扩展
扩展 nginx.作为用例
在请求到达上游服务器之前,njs 中进行复杂的访问控制和安全检查
https://nginx.org/en/docs/njs/ https://nginx.org/en/docs/njs/
不,我想知道我是否能够连接到数据库并执行类似于 Node.js 中的操作。或者甚至在 nginx 进程内“运行”节点。但我认为我的卡很糟糕,因为目前只有两个模块,它们不提供网络套接字等功能,but,有一节“在 njs 中使用节点模块”:https://nginx.org/en/docs/njs/node_modules.html https://nginx.org/en/docs/njs/node_modules.html.
这只适用于外部库,还是也适用于“节点内部”,如 net、dgram 等?
njs /questions/tagged/njs is a subset https://nginx.org/en/docs/njs/compatibility.htmlJavascript,目前缺乏任何直接与外部进程交互的方法,但是可以向local路由又可以代理其他服务。我在研究类似的要求时偶然发现了你的问题,并在这里发布了一个简单的例子:
- https://github.com/mylesj/nginx-njs-http-service-call https://github.com/mylesj/nginx-njs-http-service-call
最接近有效解决方案的方法是围绕数据库连接创建一个薄包装器,并将其部署为独立的 Web 服务,然后设置内部路由来反向代理连接:
location /internal-service {
internal;
proxy_pass http://<hostname>:<port>;
}
Your njs
然后脚本可以通过调用以下命令来遵循路由:
response.subrequest(
'/internal-service',
{
method: 'GET',
},
serviceResponse => {
// some logic...
response.return(200)
}
)
可能还有其他解决方法,但这种方法似乎是目前最可靠的。不幸的是,它确实使得开发独立模块变得困难 - 我怀疑这就是为什么没有真正可用的可重用包的原因之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)