Página de manutenção no nginx, melhores práticas

12

Eu quero configurar o servidor para mostrar uma página de manutenção quando ela existir. Eu tentei este código e funciona:

location / {
    try_files /maintenance.html $uri $uri/ @codeigniter;
}

Mas notei que ele seria exibido com um código de status 200 e pode causar confusão nos mecanismos de pesquisa. Acho que a melhor prática seria retornar um código de status 503. No google eu encontro várias páginas relevantes sobre ele, como this . No entanto, eles usam if para fazer o redirecionamento e, de acordo com a documentação do nginx, não é seguro usar ifs.

Existe uma maneira de fazer isso sem usar se? É seguro usar neste caso?

Obrigado.

    
por NeDark 13.09.2011 / 12:49

2 respostas

6

I think the best practice would be returning a 500 status code.

Acho que você quer dizer 503 em vez de 500.

they use if to make the redirect and according to nginx documentation it isn't safe to use ifs.

Não. Apenas return é 100% seguro dentro de if em location contexto.

De acordo com a documentação do nginx , você pode especificar um código de status HTTP como o último argumento para try_files . Eu tentei isso, mas não funcionou.

    
por 14.09.2011 / 12:14
16

Aqui está o que eu faço.

            if (-f $document_root/maintenance.html) {
                    return 503;
            }
            error_page 503 @maintenance;
            location @maintenance {
                    rewrite ^(.*)$ /maintenance.html break;
            }

Se o arquivo estiver lá, ele mostrará a página de manutenção. Depois de remover o arquivo, você voltará ao normal.

    
por 13.09.2011 / 13:10