Custom 503 Error Page

Douglas A. Seifert dseifert at searchspark.com
Sun Feb 3 07:02:53 MSK 2008


> > 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.

Thanks,
Doug Seifert





More information about the nginx mailing list