Respostas:
Você pode usar a errorfile
diretiva e, em seguida, um .http
arquivo de texto personalizado . Então, por exemplo:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
O conteúdo do arquivo seria 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="margin: 0 auto; width: 960px;">
<h2 >RAWR RAWR RAWR</h2>
</div>
</body>
</html>
A errorfile
diretiva também pode ser específica para um back-end.
A configuração "errorfile" não pode ser usada para alterar uma resposta enviada pelo HAProxy se os nós estiverem online. Essa configuração afeta apenas o HAProxy quando todos os nós estão offline.
É importante entender que essa palavra-chave não deve reescrever erros retornados pelo servidor, mas erros detectados e retornados pelo HAProxy. É por isso que a lista de erros suportados é limitada a um pequeno conjunto.
Há algo sujo que você pode fazer. Você pode bloquear as respostas 503, o que resultará no retorno do erro 502 personalizado para o qual você pode criar uma página de erro. No entanto, lembre-se de que qualquer motivo para o haproxy ter que retornar um 502 (resposta inválida) retornará a mesma coisa.
Basicamente, é tão simples quanto "rspdeny ^ HTTP / 1.1 503" combinado com "errorfile 502".
Temos uma parte do nosso site em execução em um sistema legado, 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 8 meses depois).
\r\n
para quebras de linha nos cabeçalhos, para atender à especificação do protocolo HTTP. Se estiver fazendo o upload de uma caixa do Windows, use obinary
modo de transferência de arquivo s / ftp para pular a conversão de quebras de linha do Windows\r\n
para quebras de linha no estilo Unix\n
.