NGINX:对后端服务器进行两次异步调用

时间:2015-08-10 04:36:26

标签: nginx openresty

我想使用NGINX模块执行以下操作: Nginx收到一个请求,检查它是否具有在缓存中解码请求的密钥(自定义)

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

我能够弄清楚如何做第1步,我通过引用来自github的openresty的nginx模块编写了一个上游模块。为了实现第2步功能,我尝试在第一个上游调用的process_header()函数中创建一个新的上游请求(即从商店获取密钥),但这没有用。怎么做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我看到两种方法:

  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的回答。它显示了如何发送子请求。