On 06.08.2013 13:31, Richard Kearsley wrote:
On 06/08/13 04:02, Dennis Jacobfeuerborn wrote:

Since I determine the reason for the denied access in lua a way to do
it there would also help. I already tried "nginx.status = 403"
followed by a "nginx.exec('/reason1')" but while the right page is
display the status code returned gets reset to 200.


Hi
You can do it in lua.. you need to do it in the header filter stage
I'm doing something similar but probably not exactly the same
Hopefully example helps (untested):

         set $status_code "";
         location /
         {
             access_by_lua '
                 -- your lua script here etc...
                 -- if (an error happened) then
                     ngx.var.status_code = "403"
                     ngx.exec("/error/403.html")
                 -- end
                 ';
         }

         location /error
         {
             root html/error;
             header_filter_by_lua '
                 if ngx.var.status_code ~= "" then
                     ngx.status = ngx.var.status_code
                 end
             ';
         }

That did the trick, thanks!

What I basically wound up doing is:

    location /error {
        root   /var/www/html;
        header_filter_by_lua '
            ngx.status = 503
        ';
    }

Kind of awkward to be forced to use Lua just for this. There should be a "status_code <code>" directive to make this possible without requiring the Lua module.

Regards,
  Dennis

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to