Varnish saintmode dá 503 em vez da página personalizada 500 de backend

2

Eu não entendo o comportamento de Varnish neste exemplo:

Digamos que eu tenha uma página em um site que comece a gerar 500 erros (e o site tenha uma boa tela personalizada de 500, mas isso não é completamente relevante).

Eu tenho código na sub-rotina vcl_fetch:

sub vcl_fetch {
    // Keep stale response for six hours in case backend fails.
    set beresp.grace = 6h;
    if (beresp.status == 500) {
        set beresp.saintmode = 30s;
        return(restart);
    }

Eu esperava que, no caso do início de um erro 500, o Verniz entregasse uma versão em cache da página com um período de carência prolongado. Não foi o que aconteceu.

Em vez disso, o Varnish publica sua própria página de 500 e, em seguida, começa a postar 503.

Se eu alterar o retorno para (entrega), ele entrega a página personalizada de 500 páginas do back-end, mas depois armazena suas próprias páginas de meditação do 503 guru pela duração do modo santo.

O que eu quero acontecer, obviamente, é entregar uma versão em cache de antes do início de 500, exceto isso, enviar nossa página personalizada de 500, e nunca enviar um 503.

Nesse caso, os back-ends ainda relatam a integridade e outras páginas do site ainda estão sendo veiculadas.

    
por Mojo 24.01.2013 / 19:58

1 resposta

1

Você precisa observar o modo de graça e / ou o modo Saint.

link

O modo Graça permite que você exiba conteúdo antigo quando seus backends estão inativos ou lentos, e o modo saint permite que você tente novamente outro back-end se o back-end que você usou responder com um erro.

Então, você precisaria de 2 ou mais back-ends para usar o modo saint.

Para usar o modo de carência, você precisará de alguma maneira de retornar uma página de erro personalizada mesmo quando o back-end estiver inoperante. Seja de um arquivo html estático ou de um código html embutido no vcl. Ambos devem estar sempre por perto, mesmo quando o backend está inativo.

    
por 21.12.2014 / 05:23

Tags