Custom 503 Error Page
Maxim Dounin
mdounin at mdounin.ru
Sun Feb 3 06:15:39 MSK 2008
Hello!
On Sun, Feb 03, 2008 at 10:47:39AM +0800, Eden Li 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
>
> On Feb 3, 2008, at 10:34 AM, Maxim Dounin wrote:
>> Just another quick note: due to some implementation wierdness of
>> ngx_http_rewrite_module, it may be required to define error_page _before_
>> if/return block. Try something like this:
>>
>> error_page 503 /system/maintenance.html;
>>
>> if (-f ...) {
>> return 503;
>> }
>
More information about the nginx
mailing list