Respuestas:
Puede usar la errorfile
directiva y luego un .http
archivo de texto personalizado . Así por ejemplo:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
El contenido del archivo sería algo así como:
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
directiva también puede ser específica para un backend.
La configuración "archivo de error" no se puede usar para cambiar una respuesta enviada por HAProxy si los nodos están en línea. Esta configuración solo afecta a HAProxy cuando todos los nodos están fuera de línea.
Es importante comprender que esta palabra clave no pretende reescribir los errores devueltos por el servidor, sino los errores detectados y devueltos por HAProxy. Es por eso que la lista de errores admitidos se limita a un conjunto pequeño.
Hay algo sucio que puedes hacer. Puede bloquear las respuestas 503, lo que dará como resultado la devolución del error 502 personalizado para el que puede crear una página de error. Sin embargo, tenga en cuenta que cualquier razón por la cual un haproxy tendría que devolver un 502 (respuesta no válida) devolverá lo mismo.
Básicamente es tan simple como "rspdeny ^ HTTP / 1.1 503" combinado con "errorfile 502".
Tenemos una parte de nuestro sitio web que se ejecuta en un sistema heredado, y terminé usando lo siguiente:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
Espero que ayude (incluso si es 8 meses después).
\r\n
para los saltos de línea en los encabezados para cumplir con la especificación del protocolo HTTP. Si carga desde un cuadro de Windows, asegúrese de usar elbinary
modo para la transferencia de archivos s / ftp para omitir la conversión de saltos de línea de Windows a saltos\r\n
de línea de estilo Unix\n
.