Me gustaría que haproxy use su propia página de documentos 503 cuando el servidor posterior (backend) envíe el código HTTP 503. ¿Es posible?
He visto algo así como condiciones de "falla de monitor" pero no sé cómo agregarlo a la interfaz.
fuente
Me gustaría que haproxy use su propia página de documentos 503 cuando el servidor posterior (backend) envíe el código HTTP 503. ¿Es posible?
He visto algo así como condiciones de "falla de monitor" pero no sé cómo agregarlo a la interfaz.
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.
\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
.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".
fuente
Tenemos una parte de nuestro sitio web que se ejecuta en un sistema heredado, y terminé usando lo siguiente:
Espero que ayude (incluso si es 8 meses después).
fuente