Returning a 503 status code using try files with a maintenance page activated

Zev Blut zblut at cerego.com
Thu May 10 02:52:39 UTC 2012


Hello,

I am looking into streamlining our nginx maintenance page check logic.
In the nginx.org documentation there is an example usage for
try_files with a maintenance page.

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

<example>
     location / {
         try_files /system/maintenance.html
                   $uri $uri/index.html $uri.html
                   @mongrel;
     }

     location @mongrel {
         proxy_pass http://mongrel;
     }
</example>

This works, but when the maintenance page is activated it returns an
http status code of 200 instead of a 503.

What works for me on our site is something like this:

<example>
location / {
   if (-f /system/maintenance.html) {
     return 503;
     break;
   }

   try_files /system/maintenance.html
              $uri $uri/index.html $uri.html
              @mongrel;
}

location @mongrel {
    proxy_pass http://mongrel;
}

error_page   503 /system/maintenance.html;

location = /system/maintenance.html {
   root /app;
}
</example>


Is it possible to remove the "if return 503" logic and have the
try_files logic from the nginx documentation, but have nginx return a
503 when the maintenance page is found?

I have a number of location directives that all have this "if return
503" logic and would like to reduce this duplication.

Thanks,
Zev



More information about the nginx mailing list