0

我想设置 nginx,使其可以根据它提供的响应按顺序处理多个请求处理程序。

  1. 收到请求
  2. 检查是否缓存在内存中 nginx 如果是则返回 如果否 goto 3
  3. 检查Redis是否有这个请求如果是返回如果没有转到4
  4. 转到反向代理上游服务器并返回
  5. 作为非阻塞操作将响应数据保存在redis中(内存缓存将按原样更新)

使用 Redis 的原因是我将数据保存在 Redis 中的各种结构中,并且可以从这些各种结构中检索数据,然后将这些块从 Redis 键的处理中合并回来以发送实际的 .

输入/输出是 XML。

4

1 回答 1

1

使用ngx_srcache + ngx_redis/ngx_redis2可以实现步骤3、4、5:

http://wiki.nginx.org/HttpSRCacheModule

而第 2 步可以通过 ngx_lua 的 rewrite_by_lua 指令在同一位置完成:

http://wiki.nginx.org/HttpLuaModule#rewrite_by_lua

无论如何,第 1 步总是由 Nginx 核心完成 :)

如果您可以通过 ngx_lua 的 cosocket API 访问您的 HTTP 后端服务,那么所有这些步骤都可以完全在 Lua 中完成(在 ngx_lua 的content_by_lua中)。您将需要lua-resty-redis来非阻塞地访问 Redis,并需要lua-resty-http-simple(例如)来访问远程 HTTP 服务。

于 2013-09-27T22:08:51.243 回答