Adicione dois locais como este:
location = /foo.htm {
root /var/www/example;
index foo.html;
}
location / {
rewrite ^/.+$ /foo.htm;
}
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?
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
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.
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; }