Setting the status code

Richard Kearsley rkearsley at blueyonder.co.uk
Tue Aug 6 11:31:10 UTC 2013


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
             ';
         }




More information about the nginx mailing list