Hello!
2014-12-03 17:34 GMT-08:00 Kawaru:
> 因为我们现在其实主要还有其他功能对接,所以需要自己替代nginx里匹配server和location的逻辑以实现不重启nginx引擎来重载匹配策略,但是还想利用ngx_lua去完成一些类似waf的功能过滤意的请求。可不可以在c中通过ngx_lua的api打入lua的代码,然后在c中根据请求的域名和url完成和相应的lua代码匹配,之后将相应的代码交由ngx_lua执行。
> 如果通过ngx_lua的api实现的话,春哥有什么实现上的建议和思路?
>
你可以定义一个抽象的 server {} 和 location {} 块,然后在 Lua 里完成具体的配置和匹配逻辑。比如在
CloudFlare 的 nginx 中,我们并没有为每一个源站都定义一个 server {} 和若干个 location,而是在 Lua
中动态完成配置的加载(从外部的 key-value 服务非阻塞地加载)和执行。甚至在 CloudFlare 的 SSL 网关中,我们也是通过
Lua 来按需动态加载 SSL 证书和私钥。Lua 代码和其他 nginx C 模块的通信主要通过 nginx
变量来完成。这并不需要采取你说的那种(很困难的)模式。原生的 ngx_lua 模块就足够了。
Regards,
-agentzh