Serve 404 de HAProxy quando nenhum acls corresponder

8

Atualmente estou re-configurando o HAProxy usando 1.5dev-17. O que eu gostaria de fazer é retornar um erro 404 quando não houver back-end para usar em uma solicitação específica.

Nossa configuração atual usa o default_backend para rotear para nossos servidores de aplicativos django, mas quando há muitas solicitações de sondagem (como um teste de caneta) que não correspondem a nenhum dos outros backends configurados, nossos servidores django param de funcionar. enquanto tentam atender a esses pedidos inválidos, retornando um 404.

Gostaria de servir o 404 do HAProxy em vez de delegar para os backends do django. Atualmente estou conseguindo isso com um hack:

frontend www
    ...
    default_backend nomatch

backend nomatch
    errorfile 503 /var/www/http/404.http

E dentro do arquivo 404.http eu defino o código de status 404 nos cabeçalhos. Isso funciona, mas parece muito errado. Existe uma maneira melhor de conseguir isso com o HAProxy? Ou devo usar um back-end regular e deixar que ele responda com um erro 404?

    
por Josh Smeaton 05.04.2013 / 15:07

2 respostas

2

Depois de querer algo parecido, é a mesma coisa que eu fiz. Parecia errado, mas funciona muito bem na prática e é muito mais limpo do que tentar colocar listas em branco em particular. Só não se esqueça de deixar um comentário para que ninguém pense que está incorreto.

    
por 21.04.2013 / 19:05
0

Se você concordar com qualquer um dos seguintes códigos de resposta: 200, 400, 403, 405, 408, 429, 500, 502, 503 ou 504.

Então você poderia fazer algo assim:

frontend www
  ...
  default_backend no-match

backend no-match
  http-request deny deny_status 400
  • http-request : link
  • Códigos de resposta aceitos descritos em errorfile : link
por 29.11.2017 / 13:49