Página de erro estático servida por nginx quando meu aplicativo está inativo

3

Se o meu aplicativo (Rails) estiver inativo ou passando por manutenção de banco de dados ou qualquer outra coisa, gostaria de especificar no nível nginx para exibir uma página estática. Assim, toda URL como o link * deve exibir um arquivo HTML estático, como /var/www/example/foo.html.

Tentar especificar isso em minha configuração nginx está me dando ajustes e loops infinitos e outros enfeites.

Estou tentando coisas como

location / {
  root /var/www/example;
  index foo.html;
  rewrite ^/.+$ foo.html;
}

Como você obteria todos os URLs do seu domínio para veicular um único arquivo estático?

    
por dreeves 22.06.2012 / 03:34

4 respostas

4

Adicione dois locais como este:

location = /foo.htm {
  root /var/www/example;
  index foo.html;
}

location / {
  rewrite ^/.+$ /foo.htm;
}
    
por 22.06.2012 / 04:01
5

Eu não tenho 100% de certeza, mas se o servidor Rails falhar, há um erro 500. Talvez você possa usar a error_page diretiva como

error_page 500 /staticpage.html
    
por 22.06.2012 / 03:44
3

Use a localização nomeada, ela não altera o URI durante o redirecionamento.

Este fragmento processa a situação "trilhos está inativa".

error_page 504 @rubydown; # 504 - gateway timeout

location @rubydown {
    internal;
    root /var/www;
    rewrite ^ /504.html break;
}

Para a notificação de manutenção, você pode usar algo semelhante no local raiz ...

location / {
    root /var/www;
    try_files /maintaince.html @rails;
}

location @rails {
    internal;
    proxy_pass http://rails.backend;
    # blablabla proxy_pass setting for Rails
}

Crie o arquivo /var/www/maintaince.html.tmpl, escreva o texto desejado. E antes de manter o trabalho crie simlink similar ln -s /var/www/maintaince.html.tmpl /var/www/maintaince.html ou apenas renomeie o arquivo. Quando o trabalho de manutenção tiver terminado, remova o simlink ou renomeie o arquivo de volta.

    
por 22.06.2012 / 09:35
2

O seguinte deve redirecionar todas as solicitações para /var/www/example/foo.html .

location / {
  root /var/www/example;
  index foo.html;
  # In the following try_files directive, the request will never reach =404.
  try_files /foo.html =404;
}
    
por 22.06.2012 / 04:50

Tags