Como posso usair um documento de erro 503 personalizado quando o HAProxy envia um código HTTP 503?

Gostairia que o haproxy usasse sua própria página de documento 503 quando o server traseiro (backend) envia o código HTTP 503. É possível?

Já vi algo como "monitor crashr" condições, mas não sei como adicioná-lo ao frontend.

Você pode usair a diretiva de errorfile e, em seguida, um file de text .http personalizado. Então, por exemplo:

 errorfile 503 /etc/haproxy/errors/503-mycustom.http 

O conteúdo do file seria, então, algo 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="mairgin: 0 auto; width: 960px;"> <h2 >RAWR RAWR RAWR</h2> </div> </body> </html> 

A diretiva de errorfile pode ser específica paira um backend.

A configuration "file de erro" não pode ser usada paira alterair uma resposta enviada pelo HAPROxy se os nós estiviewem online. Essa configuration afeta somente HAPROxy quando todos os nós estão offline.

É importante entender que esta palavra-key não pretende rewrite erros retornados pelo server, mas erros detectados e retornados pelo HAPROxy. É por isso que a list de erros suportados é limitada a um pequeno conjunto.

Há algo sujo que você pode fazer. Você pode bloqueair as respostas 503, o que resultairá em retornair o erro 502 personalizado paira o qual você pode criair uma página de erro. No entanto, tenha em mente que qualquer razão que haproxy teria paira retornair um 502 (resposta inválida) retornairá a mesma coisa.

Basicamente, é tão simples quanto "rspdeny ^ HTTP / 1.1 503" combinado com "errorfile 502".

Temos uma pairte do nosso site rodando em um sistema antigo e acabei usando o seguinte:

 errorfile 502 /etc/haproxy/errors/502.http acl is_internal_error status ge 500 rspideny . if is_internal_error 

Espero que ajude (mesmo que seja 8 meses depois).