Servir 404 de HAProxy quand aucun acls ne correspond

15

Je reconfigure actuellement HAProxy à l'aide de 1.5dev-17. Ce que je voudrais faire, c'est retourner une erreur 404 quand il n'y a pas de backend à utiliser pour une demande particulière.

Notre configuration actuelle utilise le default_backend pour acheminer vers nos serveurs d'applications django, mais quand il y a beaucoup de demandes de sondage (comme un stylo-test) qui ne correspondent à aucun des autres backends configurés, nos serveurs django s'arrêtent lorsqu'ils essaient pour servir ces demandes invalides, retournant finalement un 404.

Je voudrais servir le 404 de HAProxy plutôt que de déléguer aux backends django. J'y parviens actuellement avec un hack:

frontend www
    ...
    default_backend nomatch

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

Et dans le fichier 404.http, j'ai défini le code d'état 404 dans les en-têtes. Cela fonctionne, mais se sent très mal. Existe-t-il un meilleur moyen d'y parvenir avec HAProxy? Ou devrais-je utiliser un backend normal et simplement laisser cette poignée répondre avec un 404?

Josh Smeaton
la source
Quel est le contenu du fichier 404.http?
Jason Floyd
3
@JasonFloyd HTTP/1.0 404 Not Foundsuivi de quelques autres en-têtes, puis d'une ligne vierge, puis du <html>contenu.
Josh Smeaton

Réponses:

2

Après avoir voulu quelque chose de similaire, c'est la même chose que j'ai imaginée. Cela semblait mal, mais cela fonctionne très bien dans la pratique et est beaucoup plus propre que d'essayer de mettre sur liste noire des URL particulières. Assurez-vous simplement de laisser un commentaire afin que personne ne le rencontre en pensant qu'il est incorrect.

Philip Cristiano
la source