nginx envia em branco 200 respostas

18

Estou configurando um servidor de failover encarregado de aceitar qualquer solicitação recebida e responder com resposta em branco 200. A ideia é minimizar o tempo de resposta e garantir que não enviamos 40x ou 50x.

Eu tentei usar return 200; para os locais desejados no Nginx, mas meus sistemas de monitoramento (Pingdom) não gostaram da resposta e consideram que o servidor não está respondendo.

Existe uma maneira melhor de fazer isso, é claro, com o mínimo de sobrecarga no servidor?

    
por Sparsh Gupta 11.10.2011 / 15:15

2 respostas

21

O código de status HTTP 204 No Content tem a intenção de dizer "Concluí a solicitação, mas não há corpo para retornar":

10.2.5 204 No Content

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation. The response MAY include new or updated metainformation in the form of entity-headers, which if present SHOULD be associated with the requested variant.

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent's active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent's active view.

The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.

    
por 11.10.2011 / 15:32
27

Você pode fazer com que o nginx retorne um HTTP 200 vazio por um bloco de configuração como:

location = /health {
  return 200;
  #access_log off;
}

Você pode remover o comentário da linha access_log se não quiser que todas as verificações de saúde sejam registradas.

    
por 17.10.2011 / 01:00

Tags