nginx: tente o próximo upstream na resposta do http 200 com o conjunto de cabeçalho customizado

1

Eu tenho uma configuração nginx que funciona muito bem. Eu estou usando um bloco upstream para balancear a carga entre dois servidores. Esses servidores fornecem respostas HTTP 200, mesmo que não consigam atender à solicitação, mas definem o cabeçalho http personalizado da seguinte forma:

X-Response-Status: Failed

Quando a resposta é boa, eles dão:

X-Response-Status: OK

É possível configurar o nginx para tentar o próximo servidor upstream enquanto o primeiro fornece "X-Response-Status: Failed"?

Quero dizer, como seguir a configuração do nginx:

proxy_next_upstream error timeout http_* ($sent_http_x_response_status="Failed")

Obrigado!

UPDATE1:

Eu tenho que manter os servidores upstream dando HTTP 200, mesmo em erros, porque há uma mensagem de erro no corpo http em forma binária.

Eu tenho que passar esse erro binário para o cliente se nenhum servidor upstream puder atender a solicitação.

    
por ZsZs 15.03.2013 / 15:50

1 resposta

3

Não há opção para o proxy_next_upstream implementar o comportamento descrito por você.

Seu aplicativo não deve retornar um HTTP 200 se não puder processar a solicitação. Solicite que o aplicativo retorne um erro mais apropriado, como 500 ou 503 .

    
por 15.03.2013 / 15:52

Tags