Maintenance message pages

Denis F. Latypoff denis at gostats.ru
Mon Aug 6 19:40:17 MSD 2007


Hello Alexander,

Monday, August 6, 2007, 10:22:42 PM, you wrote:

> We're using Nginx with Mongrel + Rails. Whenever we take the system
> down for upgrades or maintenance, we take down all Mongrel processes
> and set a flag using a file. The Nginx config looks like this:

>   if (-f $document_root/.maintenance) {
>     rewrite ^(.*)$ /maintenance.html last;
>     break;
>   }

> There are two problems with this approach:

> (1) Users who are POSTing forms at the moment when we put up this
> message will get a  405 ("Method not allowed") error.

> (2) AJAX requests that occur at the same time will get the maintenance
> page in its entirety, which is not approriate for inline embeds.

> I could solve #1 by using the error_page directive to change the page,
> although it's a bit hacky. However, I don't think I can solve #2 using
> purely Nginx, as there seems to be no way to check for the existence
> of a header, in this case X-Requested-With.

> Another option I am considering is to have the maintenance page be
> served by a CGI script which simply ignores the method (possibly even
> provides a "retry" button for POSTs so that form data can be
> re-posted) and provides a slimmed-down version for AJAXed embeds.

ngx_http_perl_module ?

> Thoughts?

> Alexander.



-- 
Best regards,
 Denis                            mailto:denis at gostats.ru






More information about the nginx mailing list