Antworten:
Sie können die errorfile
Direktive und dann eine benutzerdefinierte .http
Textdatei verwenden. Also zum Beispiel:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
Der Inhalt der Datei würde dann ungefähr so aussehen:
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>
Die errorfile
Direktive kann auch spezifisch für ein Backend sein.
Die Einstellung "Fehlerdatei" kann nicht zum Ändern einer von HAProxy gesendeten Antwort verwendet werden, wenn Knoten online sind. Diese Einstellung wirkt sich nur auf HAProxy aus, wenn alle Knoten offline sind.
Es ist wichtig zu verstehen, dass dieses Schlüsselwort nicht dazu gedacht ist, vom Server zurückgegebene Fehler neu zu schreiben, sondern von HAProxy erkannte und zurückgegebene Fehler. Aus diesem Grund ist die Liste der unterstützten Fehler auf einen kleinen Satz beschränkt.
Sie können etwas Dreckiges tun. Sie können die Antworten 503 blockieren, wodurch der benutzerdefinierte Fehler 502 zurückgegeben wird, für den Sie eine Fehlerseite erstellen können. Beachten Sie jedoch, dass jeder Grund, aus dem haproxy eine 502 (ungültige Antwort) zurückgeben müsste, dasselbe zurückgibt.
Grundsätzlich ist es so einfach wie "rspdeny ^ HTTP / 1.1 503" kombiniert mit "errorfile 502".
Wir haben einen Teil unserer Website auf einem Legacy-System ausgeführt, und am Ende habe ich Folgendes verwendet:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
Hoffe es hilft (auch wenn es 8 Monate später ist).
\r\n
für Zeilenumbrüche in Kopfzeilen verwendet werden muss, um der HTTP-Protokollspezifikation zu entsprechen. Stellen Sie beim Hochladen von einer Windows-Box sicher, dass Sie denbinary
Modus für die S / FTP-Dateiübertragung verwenden, um das Konvertieren von Windows-Zeilenumbrüchen in Zeilenumbrüche\r\n
im Unix-Stil zu überspringen\n
.