Je veux renvoyer un code d'erreur HTTP 204 si quelqu'un essaie d'accéder à un chemin particulier sur mon serveur Web. Je pourrais définir un de mes serveurs Web pour renvoyer une erreur 204 et pointer haproxy en tant que backend. Cependant, étant donné qu'aucune information n'est envoyée, j'ai pensé que cela devrait être possible à partir du haproxy lui-même. Pas besoin de déranger mes serveurs Web réels.
J'ai essayé de créer un backend qui générerait l'erreur 204 comme suit:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
Le fichier 204.http contient:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
Lorsque je démarre haproxy, j'obtiens cette erreur:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
Je pense que je vais peut-être y aller dans le mauvais sens. Quelqu'un peut-il suggérer un moyen de forcer haproxy à renvoyer un 204 pour un match acl donné?
503
fichier d'erreur? Il n'y a pas de serveurs backend réels, donc HAproxy devrait servir la503
réponse.Content-Type
n'a aucun sens dans ce contexte, mais il n'y a vraiment pas assez d'informations ici pour comprendre quel est le contexte. Bien sûr, HTTP 204 est rarement utilisé de toute façon. Mon sentiment à propos de 204 est que le serveur d'origine devrait probablement l'envoyer, s'il y a un scénario où son utilisation a du sens.Réponses:
Comme mentionné dans les commentaires, vous ne pouvez pas spécifier de fichier d'erreur pour 404, car HAProxy ne générera jamais de 404. Vous devez utiliser quelque chose comme 503, qu'HAProxy émet réellement et possède un fichier d'erreur configurable. Votre fichier 204 peut être utilisé tel quel, remplacez simplement 503 par 204 dans votre configuration.
la source