Réponses:
Vous pouvez utiliser la errorfile
directive, puis un .http
fichier texte personnalisé . Ainsi, par exemple:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
Le contenu du fichier serait alors quelque chose comme:
HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html
<html>
<head>
<title>RARRR!!!!!</title>
</head>
<body style="font-family:Arial,Helvetica,sans-serif;">
<div style="margin: 0 auto; width: 960px;">
<h2 >RAWR RAWR RAWR</h2>
</div>
</body>
</html>
La errorfile
directive peut également être spécifique à un backend.
Le paramètre "errorfile" ne peut pas être utilisé pour modifier une réponse envoyée par HAProxy si les nœuds sont en ligne. Ce paramètre n'affecte HAProxy que lorsque tous les nœuds sont hors ligne.
Il est important de comprendre que ce mot clé n'est pas destiné à réécrire les erreurs renvoyées par le serveur, mais les erreurs détectées et renvoyées par HAProxy. C'est pourquoi la liste des erreurs prises en charge est limitée à un petit ensemble.
Vous pouvez faire quelque chose de sale. Vous pouvez bloquer les réponses 503, ce qui entraînera le retour de l'erreur 502 personnalisée pour laquelle vous pouvez créer une page d'erreur. Cependant, gardez à l'esprit que toute raison pour laquelle un proxy devrait retourner un 502 (réponse invalide) retournera la même chose.
Fondamentalement, c'est aussi simple que "rspdeny ^ HTTP / 1.1 503" combiné avec "errorfile 502".
Nous avons une partie de notre site Web fonctionnant sur un système hérité, et j'ai fini par utiliser ce qui suit:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
J'espère que ça aide (même si c'est 8 mois plus tard).
\r\n
pour les sauts de ligne dans les en-têtes pour se conformer à la spécification du protocole HTTP. Si vous téléchargez à partir d'une boîte Windows, assurez-vous d'utiliser lebinary
mode de transfert de fichiers s / ftp pour ignorer la conversion des sauts de ligne Windows en sauts\r\n
de ligne de style Unix\n
.