NGINX中的模块链。

我正在使用 C 语言编写一个需要访问 Redis 的 NGINX 模块。

为了使这些调用非阻塞,我想使用异步访问它(可以使用 Redis 的官方 C API 或者使用 redis2-nginx-module)。

我已经阅读了Emiller's Guide,但我需要构建一个模块的“链”。大致如下:

我的模块解析 HTTP 请求,给另一个模块作出相应请求,后者异步地与 Redis 协作作为“upstream”。

在 Redis 响应的时候,控制会返回到我的模块,并且它会最终定制 HTTP 响应,并将数据发送回服务器。

我不明白的是如何实现这些链条?我几乎找不到好的例子,所有内置的 NGINX 模块似乎都将控制 redirect 到它自己(u = r->upstream;)。有没有办法将其他模块指定为上游?

感谢你的帮助和一个好的代码示例来连接这些。

点赞
用户162639
用户162639

最终,我决定部分地通过 LUA 接口(http://wiki.nginx.org/HttpLuaModule + https://github.com/openresty/lua-resty-redis)实现逻辑。

它基本上是以非阻塞的方式使用 nginx 子请求,但提供了更容易编写模块的方法。 我使用 C 模块实现了一部分逻辑(基于处理器)。

2015-01-21 14:45:09