NGINX:向后端服务器发起两个异步调用。

我想使用 NGINX 模块完成以下操作: Nginx 接收请求,检查它是否有解码请求缓存(自定义)中的密钥

  • 如果是,则解码请求,从中获取一个 ID,并异步地检查 key-value 存储区中是否有针对此 ID 的值,并在返回中返回它。
  • 如果否,则从 key-value 存储区获取新的密钥(异步),然后将此密钥存储在缓存中并使用它来解码请求。获得 ID 并检查 key-value 存储区中是否存在针对此 ID 的值(异步),并将其发送到响应中。

我已经想出了如何完成步骤1,我参考了 Github 上的 openresty 的 Nginx 模块编写了一个上游模块。为了实现步骤2的功能,我尝试在第一个上游调用(即从存储区获取密钥)的 process_header() 函数中创建新的上游请求,但这并没有起作用。如何实现这一点?

提前感谢。

点赞
用户2060502
用户2060502

我看到两种方法:

  1. 您可以使用 lua-nginx-modulelua-resty-redis 库在 Lua 中完成所有操作。 在这里您可以找到一些信息:Configure-nginx-to-get-url-from-redis-with-key-and-proxy-the-url-to-other-server

  2. 编写 Nginx C 模块,使用 redis2-nginx-module 作为上游模块,发送子请求。 查看我的回答,Subrequests are not sent or the request hangs 显示如何发送子请求。

2015-08-11 15:22:16