nginx envia 200 respostas em branco

19

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

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 uma sobrecarga mínima no servidor?

Sparsh Gupta
fonte

Respostas:

23

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

10.2.5 204 Sem conteúdo

O servidor atendeu à solicitação, mas não precisa retornar um corpo de entidade e pode querer retornar metainformações atualizadas. A resposta PODE incluir metainformações novas ou atualizadas na forma de entidades-cabeçalhos, que, se presentes, DEVERÃO estar associados à variante solicitada.

Se o cliente é um agente de usuário, ele NÃO DEVE alterar sua exibição de documento daquela que causou o pedido a ser enviado. Esta resposta destina-se principalmente a permitir a entrada de ações a serem realizadas sem causar uma alteração na exibição do documento ativo do agente do usuário, embora qualquer metainformação nova ou atualizada DEVE ser aplicada ao documento atualmente na exibição ativa do agente do usuário.

A resposta 204 NÃO DEVE incluir um corpo da mensagem e, portanto, é sempre encerrada pela primeira linha vazia após os campos do cabeçalho.

Alexander Azarov
fonte
Olá Alex Obrigado pela nota. Imaginando se o código de resposta 204 é reconhecido por todos os principais navegadores atualmente. ou seja, se meu servidor começar a enviar 204, há alguma probabilidade de que alguns visitantes (em navegadores, celulares, terminais) obtenham um erro?
Sparsh Gupta 11/10
1
@SparshGupta Não sou especialista em compatibilidade de navegadores, desculpe. Fiz uma verificação rápida em alguns navegadores (FF 7 e Safari no Mac OSX) - eles não fazem exatamente nada. Por exemplo, se você já tem uma página aberta, insira um URL retornando 204 na barra de endereços e pressione Enter, os dois navegadores ainda mostrarão a página anterior.
Alexander Azarov
29

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 descomentar a access_loglinha se não quiser que todas essas verificações de integridade sejam registradas.

Cody Caughlan
fonte
6
Note-se que o sinal '=' após a localização é importante. Sem ele, esse arquivo deve existir, caso contrário nginx não retornará 200. Com ele, você pode apenas fazer-se qualquer local que você quer e não se preocupar com arquivos e nginx o prazer voltar 200.
Florin Andrei
Como combinar isso com a autenticação básica, de forma que a solicitação autenticada retorne 200 e a 401 não autenticada?
21416 Kiril