根据每个接收到的响应链接连续的请求处理程序

我希望设置 nginx,使其能够根据其提供的响应,在序列中处理多个请求处理程序。

  1. 接收请求
  2. 检查是否在 Redis 中的缓存中,如果是则返回,否则转到步骤3
  3. 检查 Redis 是否有此请求,如果是则返回,否则转到步骤4
  4. 转到反向代理上游服务器并返回响应
  5. 将响应数据保存在 Redis 中作为非阻塞操作(内存缓存将被更新)

选择 Redis 的原因是我将在 Redis 中保存数据,并且可以从这些各种结构中检索数据,然后从 Redis 键的过程中合并这些块,以便发送实际数据。

输入/输出格式为 XML。

点赞
用户2789404
用户2789404

使用 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

第一步始终由 Nginx 核心完成 :)

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

2013-09-27 22:08:51