Servir 404 do HAProxy quando nenhuma ACL corresponde

15

Atualmente, estou reconfigurando o HAProxy usando o 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 análise (como um teste de caneta) que não correspondem a nenhum dos outros back-ends configurados, nossos servidores django ficam paralisados ​​enquanto tentam para atender a essas solicitações inválidas, retornando eventualmente um 404.

Eu gostaria de servir o 404 do HAProxy em vez de delegar para os back-ends 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, 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 404?

Josh Smeaton
fonte
Qual é o conteúdo do arquivo 404.http?
Jason Floyd
3
@JasonFloyd HTTP/1.0 404 Not Foundseguido por outros cabeçalhos, depois uma linha em branco e o <html>conteúdo.
Josh Smeaton

Respostas:

2

Depois de querer algo semelhante, é a mesma coisa que inventei. Parecia errado, mas funciona muito bem na prática e é muito mais limpo do que tentar colocar na lista negra determinados URLs. Apenas deixe um comentário para que ninguém o encontre pensando que está incorreto.

Philip Cristiano
fonte