atom feed21 messages in ru.sysoev.nginxRe: Custom 503 Error Page
FromSent OnAttachments
Douglas A. SeifertFeb 2, 2008 3:18 pm 
Maxim DouninFeb 2, 2008 4:36 pm 
Douglas A. SeifertFeb 2, 2008 5:08 pm 
Maxim DouninFeb 2, 2008 5:20 pm 
Eden LiFeb 2, 2008 5:22 pm 
Douglas A. SeifertFeb 2, 2008 6:14 pm 
Douglas A. SeifertFeb 2, 2008 6:15 pm 
Maxim DouninFeb 2, 2008 6:33 pm 
Eden LiFeb 2, 2008 6:47 pm 
Maxim DouninFeb 2, 2008 7:15 pm 
Douglas A. SeifertFeb 2, 2008 8:02 pm 
Corey DonohoeFeb 2, 2008 10:39 pm 
Igor SysoevFeb 2, 2008 10:40 pm 
Douglas A. SeifertFeb 3, 2008 7:51 am 
Douglas A. SeifertFeb 3, 2008 7:58 am 
Corey DonohoeFeb 3, 2008 9:59 am 
Doug SeifertFeb 3, 2008 1:36 pm 
Killian MurphyJun 19, 2009 9:47 pm 
Spirit SpiritNov 26, 2009 2:31 pm 
Igor SysoevNov 26, 2009 10:02 pm 
spiritDec 2, 2009 1:46 pm 
Subject:Re: Custom 503 Error Page
From:Maxim Dounin (mdou@public.gmane.org)
Date:Feb 2, 2008 7:15:16 pm
List:ru.sysoev.nginx

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.

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; }