So is "rewrite_by_lua" also evil?

Nginx User nginx at
Fri Oct 14 20:41:19 UTC 2011

Additional feedback to agentzh:

Everything seems to be working fine. However, a small configuration
error showed a potential problem in that the rewrite_by_lua directive
does not seem to take account of the rewrite module's "last" flag.

Contrived example:

# GET /sometext/xyz.html
server {
     location @pretty_urls {
              rewrite ^/sometext/xyz\.html$ /abc.html last;

              # line below included by mistake and shouldn't have been there
              # On the other hand, the hit above should mean it is not
called anyway
              rewrite_by_lua 'ngx.exec("@proxy");';
     location @proxy {
             include /etc/nginx/firewall.default;
     location ~ ^.+\.php$ {
             content_by_lua 'ngx.exec("@proxy");';
     location / {
             try_files $uri $uri/ @pretty_urls;

... generates an error along the lines of ...

2011/10/14 20:10:26 [error] 17325#0: *16 lua handler aborted: runtime
error: attempt to call a nil value, blah, blah, blah".

As said, it was a misconfig but I would have expected that with the
earlier hit with the rewrite module, all further rewrites, including
ngx_lua's should stop.


More information about the nginx mailing list