Hi, is there a way to use nginx to publish the maintenance file

I have a question, if I want to use nginx to main the maintenance file,
and what’s the easiest way for me to change a web to maintained status
when it’s in emergency?

another question, as you see, that twitter always has Over Capacity
Page, and how to implement this? is there any need to nginx to read
something and then redirect all the connection to over capacity page?

On 3/23/2011 6:35 PM, Space Lee wrote:

I have a question, if I want to use nginx to main the maintenance file, and
what’s the easiest way for me to change a web to maintained status when it’s in
emergency?

try_files /www/maintenance.html $uri $uri/

It will be better to return 503 in that case as well.


Regards, Vitaly T.
System A.
U.S. +1 (206) 905-9939
Russia +7 911 094-2035

thanks, it works using try_files, and I put it in the location / { }
I try to setup 503 as you suggest, but I don’t know how to trigger the
503
status?

So each time, if I want to change to a maintained status, I have to add
this line to the nginx configuration file and then restart the config?
Is there a simpler way, so that I don’t need to change the settings of
the server.

No not really.

First you could send the status code by dynamic (ex. php) maintrance
file (I think this is a bad idea through…) Second you could do
something like this:

try_files/www/maintenance.html $uri $uri/ @maintrance;

location @maintrance {
return 503;
}

Am 07.04.2011 10:19, schrieb Space Lee:

Hello!

To return a http status simply add “return STATUS_CODE;” to your config
location. So to return a 503 type:

return 503;

MfG

Am 07.04.2011 10:13, schrieb Spacelee:

Hi, a strange thing, I found try_files won’t work in the server context,
only work in the location context.

I have a sample like this
try_files /maintenance.html $uri $uri/
location / {
XXXX
}

then it won’t work, but if I move the try_files into the location

location / {
try_files /maintenance.html $uri $uri/
XXXX
}

then it works for root directory.

and it’s a trouble that I have to put the try_files in each location, as
I have .php, .jpg location.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}

And I have to add the try_files in each of the location, is there any
better solution.

I try to put the try_files out of the location, restarting nginx won’t
have any error, but it won’t work when I access the site in the web
browser.

Hello!

On Thu, Apr 07, 2011 at 06:41:05PM +0800, Space Lee wrote:

location / {
try_files /maintenance.html $uri $uri/
XXXX
}

then it works for root directory.

Yes, this is expected behaviour. Directive “try_files” isn’t
inherited and only make sense at server level if there is no
matching location (that is, if implicit server location used to
process request).

Maxim D.