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:Douglas A. Seifert (dsei@public.gmane.org)
Date:Feb 2, 2008 8:02:30 pm
List:ru.sysoev.nginx

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.

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