So is "rewrite_by_lua" also evil?
ngx.eugaia at gmail.com
Sat Oct 15 11:38:43 UTC 2011
On 15/10/2011 14:09, agentzh wrote:
> On Sat, Oct 15, 2011 at 6:43 PM, Eugaia<ngx.eugaia at gmail.com> wrote:
>> If you were just wrapping around set_var, then no. It would only be able to
>> handle non-reentrant code, just like setby.
> Gathered so ;) I asked because I didn't want to miss any quick magic ;)
Nope. WYSIWYG. :-)
>> In order to have reentrant code, it would need to have a generic layer that
>> would be able to jump in/out of the script engine (and handle re-calling the
>> script engine post subrequest etc). The rewrite handler would also need to
>> be re-written to handle re-entering the script engine.
>> The advantage of having a generic rewrite re-entrant layer, though, would be
>> that set_var would also be able to accept subrequests etc (assuming you used
>> that to base setby on).
> I've been waiting for this feature for more than a year now ;)
Well, I've built a more generic scripting framework that implements
ngx_http_script_xxx - type stuff at any phase for which you can define
handlers, not just the rewrite phase, and have build a large number of
functions that work of this framework (echo, memcache, json parsing,
arrays, math functions, shell_exec and a bunch of other things). It is
almost able to do everything that you can do in ngx_lua (not quite, but
I'm getting there), as well as a few things I've not seen in Lua, and it
also works with the ngx_tcp_module (so you can do scripting on arbitrary
TCP traffic as well as at the various phases of HTTP requests). I've
had it running in production for a while, and am actively developing it,
I just haven't open-sourced it yet (I'm not sure yet whether I will or
not, so I'm holding off on doing so for the time being).
I could probably make what I've done work with the current Nginx and NDK
code, but since I'm not using the NDK set_var stuff for this scripting
stuff, I don't intend on spending quite a bit of time developing
something for the NDK that I'm never going to use.
More information about the nginx