So is "rewrite_by_lua" also evil?

agentzh agentzh at
Sun Oct 16 04:29:34 UTC 2011

On Sat, Oct 15, 2011 at 10:20 PM, Nginx User <nginx at> wrote:
> Makes sense to stick to one given that each is independent of the other.
> Just so tempting/logical on the surface, when they all go into the
> same location block for instance, to try to pick and choose elements
> from each.

That's all what we dream about, but the reality of the nginx internals
are sad in various ways and have been preventing us from doing a lot
of fancy things without hacking or even patching :)

> In my example, the flags from rewrite with the single line syntax is
> nice, clear and familiar but it does not provide a native mechanism to
> jump to another specific location (perhaps Igor would consider
> allowing try_files to accept a single argument).

You can now do what the "rewrite" directive does in pure Lua since the
latest ngx_lua v0.3.1rc13 release.

Your previous example

    location @pretty_urls {
             rewrite ^/sometext/xyz\.html$ /abc.html last;
             rewrite_by_lua 'ngx.exec("@proxy");';

can be rewritten as

    location @pretty_urls {
        rewrite_by_lua '
            if ngx.var.uri == "/sometext/xyz.html" then
                return ngx.req.set_uri("/abc.html")

I think it's also clean and readable as compared to the "rewrite"
directive, but much more flexible.

See the documentation here for details:

> Anyway, learnt a bit more and I will like to say thank you very much
> for the work put in to the various weird and wonderful modules you
> have pushed out.
> The modules open up a huge amount of options and really take Nginx to
> another level.

Glad you like it! And thank YOU for reporting all these issues during
your adventure ;)


More information about the nginx mailing list