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?
la source
HTTP/1.0 404 Not Found
suivi de quelques autres en-têtes, puis d'une ligne vierge, puis du<html>
contenu.Réponses:
Si vous êtes d'accord avec l'un des codes de réponse suivants: 200, 400, 403, 405, 408, 429, 500, 502, 503 ou 504.
Ensuite, vous pouvez faire quelque chose comme ceci:
http-request
: http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4-http-requesterrorfile
: http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#errorfilela source
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.
la source