Custom 503 Error Page

Igor Sysoev is at rambler-co.ru
Sun Feb 3 09:40:40 MSK 2008


On Sat, Feb 02, 2008 at 08:02:53PM -0800, Douglas A. Seifert wrote:

> > > Hmm... that doesn't seem to work either.  Is it possible that `return xxx;` 
> > > always generates the internal response?
> > >
> > > The only thing that would achieve the desired result in this case is 
> > > proxying to some blackhole which would cause the 503 to be caught and 
> > > rewritten according to the error_page directive.
> > 
> > Oops. Sorry, I missed. The real problem is that with suggested 
> > configuration (i.e. always return 503 at server level) there 
> > is no way to reach /system/maintenance.html file for nginx.
> > 
> > So, it tries to get /system/maintenance.html for error body, and 
> > gets yet another 503. So it has to return hardcoded content.
> > 
> > The only solution is to allow nginx to access 
> > /system/maintenance.html somehow. Something like this:
> > 
> >      error_page 503 /system/maintenance.html;
> > 
> >      location / {
> >          if (-f ...) {
> >              return 503;
> >          }
> >      }
> > 
> >      location /system/maintenance.html {
> >          # allow requests here - do not return 503
> >      }
> > 
> > The if{} block should be in all locations where access should be 
> > disallowed, but not for /system/maintenance.html itself.
> > 
> > Maxim Dounin
> > 
> 
> Doing it that way gets me the custom content, but with a 200 OK
> response. :(  I'm afraid the only way I will be able to do this is to
> recompile nginx with the default 503 content set to what I want it to be
> (that's my current workaround).  Or dig up my extremely rusty C skills
> and try to figure out the bug, if any.

The way suggested by Maxim should work. Are you sure that yo do not use

     error_page 503 = /system/maintenance.html;

instead of

     error_page 503 /system/maintenance.html;

?


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list