[Solved] Re: Returning a 503 status code using try files with a maintenance page activated

Zev Blut zblut at cerego.com
Mon May 14 09:04:14 UTC 2012


On 05/10/2012 11:52 AM, Zev Blut wrote:
> 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.

I have found a work around to my question.

I push the "if return 503" check into the location that defines
the proxy pass.

My working example becomes:

location / {
   try_files $uri $uri/index.html $uri.html @mongrel;

location @mongrel {
   if (-f /system/maintenance.html) {
     return 503;
   proxy_pass http://mongrel;

error_page   503 /system/maintenance.html;

location = /system/maintenance.html {
   root /app;


In the end, I do not use the maintenance path in the try_files.
This may not look like much of a change, but my refactoring helps
reduce the checks when I have multiple location directives that
all end with pass to @mongrel.


More information about the nginx mailing list