Risposte:
È possibile utilizzare la errorfile
direttiva e quindi un .http
file di testo personalizzato . Quindi per esempio:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
Il contenuto del file sarebbe quindi simile a:
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
direttiva può essere specifica anche per un backend.
L'impostazione "errorfile" non può essere utilizzata per modificare una risposta inviata da HAProxy se i nodi sono online. Questa impostazione ha effetto su HAProxy solo quando tutti i nodi sono offline.
È importante comprendere che questa parola chiave non ha lo scopo di riscrivere gli errori restituiti dal server, ma gli errori rilevati e restituiti da HAProxy. Questo è il motivo per cui l'elenco degli errori supportati è limitato a un piccolo set.
C'è qualcosa di sporco che puoi fare. È possibile bloccare le risposte 503, il che comporterà la restituzione dell'errore 502 personalizzato per il quale è possibile creare una pagina di errore. Tuttavia, tieni presente che qualsiasi motivo haproxy dovrebbe restituire un 502 (risposta non valida) restituirà la stessa cosa.
Fondamentalmente è semplice come "rspdeny ^ HTTP / 1.1 503" combinato con "errorfile 502".
Abbiamo una parte del nostro sito Web in esecuzione su un sistema legacy e ho finito per utilizzare quanto segue:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
Spero che sia d'aiuto (anche se dopo 8 mesi).
\r\n
per le interruzioni di riga nelle intestazioni per rispettare le specifiche del protocollo HTTP. Se si carica da una finestra di Windows, assicurarsi di utilizzare labinary
modalità per il trasferimento di file s / ftp per saltare la conversione delle interruzioni di linea di Windows in interruzioni\r\n
di linea in stile unix\n
.